在一个glDrawElements调用中绘制多个LINE_LOOP

我正在做的游戏有OpenGL(2.1)vectorgraphics,我需要绘制多达1000个敌人,每个敌人由4到100行组成。

每个敌人可以绘制成一个单一的循环,所以一个绘制策略就是每个敌人调用glDrawElements(GL_LINE_LOOP, ...)一次。 这会导致每帧调用glDrawElements次数过多(多达1000次)。

另一个策略是将每个敌人形成的线循环分成单独的线段,并调用glDrawElements(GL_LINES, ...) 。 这导致了很多重复的顶点,但我想避免。

有没有办法在一次调用glDrawElements(或与其他函数)绘制多个线循环? 我想我需要在vertex / element数组中标记一些指标来标记每一行循环的结束位置。

当然如果你使用索引,你不重复垂直?

你也可以看看实例化,在那里你有一组反复绘制的一组matrix,以较低的频率发送一组matrix(即一个单独的调用可以绘制20行,用15个不同的matrix重复)。

编辑:

我觉得你可能担心指数的重复而不是垂直。 我不会为此担心 – 这就是指数点。 它们允许vert被重用,而不被GPU重新转换。