iphone–glDrawElements vs glDrawArray效率

iphone–glDrawElements vs glDrawArray效率,第1张

概述我正在为iOS和Android制作游戏.我在很多地方都看到使用索引绘制比绘制三角形数组更有效.问题是我正在使用有损压缩顶点(比如md2的文件格式)并且它只需要少于索引 - 数组:N * 3(xyz)* 1(uchar)转换(12字节)比例(12字节).元素:N * 3(xyz)* 4(uint)数组/ ~10似乎数组比索引和压缩元素更好的选择,尽管苹果的Op

我正在为iOS和Android制作游戏.
我在很多地方都看到使用索引绘制比绘制三角形数组更有效.

问题是我正在使用有损压缩顶点(比如md2的文件格式)并且它只需要少于索引 –
数组:N * 3(xyz)* 1(uchar)转换(12字节)比例(12字节).
元素:N * 3(xyz)* 4(uint)数组/ ~10

似乎数组比索引和压缩元素更好的选择,尽管苹果的OpenGL分析器工具说我应该使用glDrawElements ..

OpenGL实现是否更喜欢索引数组?或者是因为索引数组包含的数据少于常规未压缩数组?

附:
我正在使用OpenGL es 2.0,顶点着色器是解压缩顶点的人.最佳答案您使用的是顶点阵列还是顶点缓冲区对象?如果您使用的是Vertex Arrays,那么您可能需要考虑查看glDrawRangeElements而不是glDrawElements.

除非你的所有多边形都有不同的顶点(非常不可能),否则glDrawElements将比glDrawArray更快,因为glDrawElements将利用重复顶点将被加载到gpu缓存中的事实,并且不必为每个多次加载多次该顶点是其中一部分的多边形.但是,使用glDrawArray,它将遍历数组并且无法关联相似的顶点,因此必须多次加载它们.

但是,它总是取决于您的具体情况.尝试使用分析器或使用这些方法获取帧速率.在它们之间切换应该不会太难.如果一个明显更好,请使用那个.如果两者都没有出色的表现,那么它可能并不重要.

请记住,过早优化是万恶之源.祝好运! 总结

以上是内存溢出为你收集整理的iphone – glDrawElements vs glDrawArray效率全部内容,希望文章能够帮你解决iphone – glDrawElements vs glDrawArray效率所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1139828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存