OpenGL:二维四边形应该如何 stored/rendered?

OpenGL: How should 2D quads be stored/rendered?

我将我的模型数据存储在 VBO/IBOs 中并使用 VAO 渲染它们,据我所知,这几乎是通常的做法。

但我有为 2D 精灵和 GUI 生成的非模型四边形,它们仅包含 4 个顶点。这些四边形的位置很少相同(除非它是 GUI 的一部分),并且 UV 坐标也在每一帧中改变。另外,屏幕上任何时候的数量都很大,至少有一千多

我想知道,将单个四边形传输到 GPU 并渲染它们的最佳方式是什么?

给每个 VBO 分配感觉有点矫枉过正,并且每帧将它们聚集成一个新的 VBO created/destroyed,同样看起来很极端。但我唯一能想到的其他方法是使用立即模式,我一直避免使用它,因为它已经过时了。

您绝对可以将所有四边形放入一个 vbo 中,并在需要时只绘制一个。每个矩形有一个 vbo 是不必要的矫枉过正。