我正在编写适用于Android和iPhone的OpenGL ES 1.1应用程序。 OpenGL ES引擎位于共享库中,可通过Android上的NDK访问。
我正在寻求优化我的OpenGL性能。那里有很多视频和资源,例如:
http://www.vizworld.com/2010/02/ngmocos-tim-omernick-optimizing-opengl-iphone/
OpenGL ES 2.0 : Seeking VBO Performance/Optimisation Tips For Many Moving Vertices
When are VBOs faster than "simple" OpenGL primitives (glBegin())?
https://gamedev.stackexchange.com/questions/1068/opengl-optimization-tips
但通常有众所周知的技术可以普遍适用,例如:
某些技术在其细节方面可能或者可能更敏感,并且在Android和iPhone之间可能会有所不同,这就是我感兴趣的内容。例如:
所以我的问题是:魔术优化的更精细细节是什么,例如上面的最后一个列表在Android和iPhone之间有所不同?他们不同的地方,最好的策略是什么?只需使用适合这两个世界的价值? (根据平台在运行时微调这些细节可能有点过头了?)
答案 0 :(得分:1)
答案中提到了主要(正统)优化。但是,还有一些其他鲜为人知的技术适用于在移动设备上呈现:
与桌面怪物相比,移动GPU的时钟频率和内存带宽要低得多。尽可能减少透支和纹理访问是明智的。考虑使用CPU级隐藏表面删除算法和技术。
使用特定于供应商的分析器来微调特定芯片的代码。如果性能因供应商而异,则使用不同的代码路径。
再一次,填写移动设备至关重要。使用较小的数据类型,较少的纹理提取。对于Apple在新iPad上的视网膜显示器尤其如此。更喜欢对合理公式进行纹理查找的计算(您应该剖析)。