在OpenGL中重新排列数组时的效率

Arm*_*yan 4 c++ opengl performance

想象一下,我有一个顶点数组和一个索引数组.假设有可能重新排列索引数组中的元素,使得单个呼叫glDrawElementsGL_TRIANGLE_STRIP绘制所需的数字.另一种可能性是调用glDrawElements,GL_TRIANGLES但这会使索引数组更长.

它在效率方面真的很重要(我的意思是真正的效率,而不是一些微观优化)我选择哪种方式,或者底层例程是否相同?

旁注:我不愿意重新安排我使用的元素的原因GL_TRIANGLE_STRIP是因为我认为条带中的三角形将具有交替的缠绕.我错了吗?

Str*_*ger 5

使用GL_TRIANGLE_STRIP和之间的呼叫之间没有真正的性能差异GL_TRIANGLES.

现在,如果您可以重新排列索引以最大化变换后顶点缓存,则可以获得巨大的性能提升.多年前我这样做是为了渲染大的地形斑块并且观察到10到15倍的FPS加速(使用某种希尔伯特曲线方案).