索引绘制vs绘制数组

最近我想知道,哪个绘制命令更快,绘制drawArraysdrawElements 。 我知道它们之间的区别, drawArrays只是按照它们提供的顺序绘制每个顶点, drawElements根据提供的索引绘制顶点。 但我仍然好奇哪个命令更快,或者什么时候应该使用drawArrays而不是drawElements ,反之亦然。

这取决于

使用glDrawElements需要一个额外的索引缓冲区,但是允许删除重复的顶点,原语的连接以及通过硬件顶点caching重新使用顶点。

使用glDrawArrays更简单,但没有这些优点。

桌面硬件已经使用GL_TRIANGLES在glDrawElements上进行了相当长的一段时间的优化–Quake 3把它作为首选的渲染path ,所以这就是我们正在谈论的时间表。

一些移动硬件可能仍然有glDrawArrays和GL_TRIANGLE_STRIP作为最佳path。

与往常一样,在您的目标平台上进行基准testing。