在OpenGL中使用顶点数组批处理GL_POLYGON

时间:2012-08-16 06:30:39

标签: opengl

我需要使用顶点数组(放入顶点缓冲区对象)渲染一堆GL_POLYGONS。

我正在使用索引和glDrawElements()。

我知道您可以使用冗余顶点批量处理GL_TRIANGLE_STRIPS,因此在渲染过程中它们会被链接起来。

GL_POLYGON可能类似吗?

如果可能的话,我想避免在循环中调用glDrawElements(),为每个多边形指定索引。

(这不适用于OpenGL ES - 我在笔记本电脑上使用OpenGL。)

编辑#1:

我想在此添加Tim的答案(原始重启)可行,但你需要记住启用这种模式 - 这需要我一段时间来弄明白。即:

// enable primitive restart
glEnable(GL_PRIMITIVE_RESTART);

1 个答案:

答案 0 :(得分:2)

如果您想通过一次绘制调用绘制多个多边形,则可以使用glMultiDrawElements。您只需传入一个指向索引的数组。

或者,如果您要定位更高版本的OpenGL,则可以使用名为glPrimitiveRestartIndex的内容,它允许您指定重新启动当前基元的特殊索引值。因此,您可以定义一个“特殊”索引,然后在将该索引插入数组时,多边形将使用下一个索引重新启动。这只是OpenGL 3+的核心。