Iphone glDrawElements与glDrawArray效率
我正在为iOS和Android制作一个游戏。 我在很多地方看到,使用索引绘制比仅绘制三角形数组更有效 问题是,我使用的是有损压缩顶点(如md2的文件格式),它所需的时间不只是索引本身- 数组:N*3(xyz)*1(uchar)+平移(12字节)+缩放(12字节)。 元素:N*3(xyz)*4(uint)+数组/~10 看起来数组比索引和压缩元素更好,尽管苹果的OpenGL profiler工具说我应该使用GLDraweElements OpenGL实现是否更喜欢索引数组?或者是因为索引数组包含的数据少于常规未压缩数组 p、 美国。 我使用的是OpenGL es 2.0,顶点着色器是对顶点进行解压缩的工具。使用Iphone glDrawElements与glDrawArray效率,iphone,android,opengl-es,Iphone,Android,Opengl Es,我正在为iOS和Android制作一个游戏。 我在很多地方看到,使用索引绘制比仅绘制三角形数组更有效 问题是,我使用的是有损压缩顶点(如md2的文件格式),它所需的时间不只是索引本身- 数组:N*3(xyz)*1(uchar)+平移(12字节)+缩放(12字节)。 元素:N*3(xyz)*4(uint)+数组/~10 看起来数组比索引和压缩元素更好,尽管苹果的OpenGL profiler工具说我应该使用GLDraweElements OpenGL实现是否更喜欢索引数组?或者是因为索引数组包含的
gldraurements()
将节省大量内存,您可以按任意顺序指定数组元素
但是,使用glDrawArrays()
,您唯一的选择是在列表上按顺序迭代
您必须进行实验。您使用的是顶点数组还是顶点缓冲区对象?如果您使用的是顶点数组,那么您可能需要考虑查看<代码> GDReRangangeEngs>代码>而不是<代码> GLD。p> 除非所有多边形都有不同的顶点(不太可能),
glDrawElements
将比glDrawArray
快,因为glDrawElements
将利用重复顶点将加载到gpu缓存的事实,对于该顶点所属的每个多边形,不必加载多次。但是,使用glDrawArray
,它将在数组中迭代,无法关联相似的顶点,因此必须多次加载它们
然而,这取决于你的具体情况。尝试使用探查器,或者使用这些方法中的每一种获取帧率。在它们之间切换应该不会太难。如果一个明显更好,就用那个。如果两者都不是很好,那么这可能没什么大不了的
记住,过早优化是万恶之源。祝你好运!:)