【发布时间】:2015-07-09 19:30:11
【问题描述】:
我将模型数据存储在 VBO/IBO 中,并使用 VAO 渲染它们,据我所知,这与通常的做法差不多。
但我有为 2D 精灵和 GUI 生成的非模型四边形,它们仅包含 4 个顶点。这些四边形的位置很少相同(除非它是 GUI 的一部分),并且 UV 坐标也每帧都发生变化。此外,屏幕上任何时候都有大量的内容,至少有一千多个。
我想知道,将单个四边形传输到 GPU 并渲染它们的最佳方式是什么?
为每个 VBO 分配一个 VBO 感觉有点矫枉过正,并且将它们集中到一个新的 VBO 中创建/销毁每个帧,同样看起来很极端。但我能想到的唯一其他方法是使用即时模式,自从它贬值以来我一直在避免使用它。
【问题讨论】:
-
为什么你觉得为每个四边形使用 VBO 是“矫枉过正”?您必须以某种方式将数据传输到 GPU,而实际上没有其他方法可以做到这一点。如果它最终太慢,您将不得不切换到其他方法,例如点精灵。
-
@AlchemicalApples - 我读过的大多数指南都强调将尽可能多的数据放在单个 VBO 中,所以我只是假设它们会带来很多开销。
-
明确使用单个 VBO。