我需要使用顶点数组(放入顶点缓冲区对象)渲染一堆GL_POLYGONS。
我正在使用索引和glDrawElements()。
我知道您可以使用冗余顶点批量处理GL_TRIANGLE_STRIPS,因此在渲染过程中它们会被链接起来。
GL_POLYGON可能类似吗?
如果可能的话,我想避免在循环中调用glDrawElements(),为每个多边形指定索引。
(这不适用于OpenGL ES - 我在笔记本电脑上使用OpenGL。)
编辑#1:
我想在此添加Tim的答案(原始重启)可行,但你需要记住启用这种模式 - 这需要我一段时间来弄明白。即:
// enable primitive restart
glEnable(GL_PRIMITIVE_RESTART);
答案 0 :(得分:2)
如果您想通过一次绘制调用绘制多个多边形,则可以使用glMultiDrawElements
。您只需传入一个指向索引的数组。
或者,如果您要定位更高版本的OpenGL,则可以使用名为glPrimitiveRestartIndex
的内容,它允许您指定重新启动当前基元的特殊索引值。因此,您可以定义一个“特殊”索引,然后在将该索引插入数组时,多边形将使用下一个索引重新启动。这只是OpenGL 3+的核心。