在iPhone上优化OpenGL ES并解释Instruments

5
我试图将iPhone 3Gs的FPS从30提高到尽可能高...但我遇到了一些问题,认为寻求建议会更好。

1)OpenGL ES工具中的Renderer Utilization和Tiler Utilization列确切地表示什么?我的Tiler Utiliation百分比非常低,而我的Renderer Utilization在用户交互和应用程序翻转到横向模式时倾向于下降。我注意到每当Renderer Utilization值下降时,我的FPS也倾向于下降。我的FPS在横向模式下下降对我来说特别奇怪,因为纵向模式和横向模式使用完全相同的游戏逻辑和纹理...并且横向模式实际上渲染更少的顶点/三角形(在横向模式下有些UI部分根本不绘制)。

2)我已经完成了ngmoco / Stanford视频中大多数推荐的优化措施,我认为我能做的唯一事情是将GLfloat更改为GLshorts,并将我的顶点与纹理坐标交错到一个数组中。这些措施中的任何一个都可能对我的FPS产生很大影响吗?这是一个具有许多大型详细纹理的2D精灵游戏...

3)隐藏多边形的更快方法是什么:将所有顶点设置为相同的坐标(基本上将其缩小为一点),还是将其alpha值设置为0?我猜前者更快,因为混合通常较慢,并且在iPhone上特别昂贵。

4)目前,我正在使用2个512x512纹理,一个1024x512纹理和一个256x256纹理。我已经寻求了如何最好地管理它们的建议,有人告诉我不要将它们合并为1个1024x1024纹理,因为iPhone 3G的内存问题。我想在这里确认一下,因为如果我把所有东西都放在一个纹理中,我可以消除反复调用glBindTexture...

1个回答

0

回复 #4:(a) 是的,iPhone 的文档中记录了不支持边长大于1024像素的图片。1024x1024是理论上的最大限制,但如果你试图接近这个限制可能会遇到问题。

(b) 如果你的所有纹理都无法适应1024x1024的空间,那么在填充了1024x512和2个512x512之后,你还剩下256x256的空间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接