如何在 opengl 中的一个 vbo 中绘制多个元素?

How to draw multiple elements in one vbo in opengl?

假设我有 M 个具有某种形状和顶点顺序的多边形。
如果我为每个多边形创建一个 vbo,那么我有 M 个 vbo。
当我想画它们的时候,我必须在我的 cpu 上实现一个 M 循环。由于M太大,速度太慢。
所以我只想创建一个 vbo 来存储所有多边形的顶点。 但是当我想使用 GL_POLYGON 绘制一个 vbo 时,opengl 会将此 vbo 中的所有顶点视为一个多边形中的顶点。
所以输出是多个多边形并集,也不例外
所以我的问题是如何在一个 vbo 中分离多个多边形顶点。
我知道如果我将每个多边形视为多个三角形并将相应的顶点索引存储在 ebo 中是可行的。 但是这种方法可能不适用于多条线,并且三角测量有时间成本。
但我认为应该有一个更合适的方法。

将所有顶点存储在一个 vbo 中(正如您在问题中提到的)。

然后你可以用glMultiDrawArrays(documentation and further explanation).

一次画完它们