1

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

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

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

GL_POLYGON 是否有类似的可能?

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

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

编辑#1:

我想在这里补充一下 Tim 在下面的答案(原始重启)有效,但您需要记住启用此模式 - 这让我花了一段时间才弄清楚。IE:

// enable primitive restart
glEnable(GL_PRIMITIVE_RESTART);
4

1 回答 1

2

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

或者,如果你的目标是更高版本的 OpenGL,你可以使用一个叫做 的东西glPrimitiveRestartIndex,它允许你指定一个特殊的索引值来重新启动当前的图元。因此,您可以定义一个“特殊”索引,然后在任何时候将该索引插入到数组中,多边形将使用下一个索引重新开始。不过,这只是 OpenGL 3+ 的核心。

于 2012-08-16T06:40:00.277 回答