我正在开发一款相对简单的2D侧滚动iPhone游戏。控件是基于倾斜的。我使用OpenGL ES 1.1作为图形。游戏状态以30 Hz的速率更新......并且绘图以30 fps的速率更新(通过NSTimer)。绘图的平滑性还可以......但不像iFighter那样流畅。我该怎么做才能提高游戏的流畅度?
以下是我曾经简要考虑的潜在问题:
我一次改变最多15“小”(20x20像素)纹理的不透明度......以这种方式显然改变不透明度会降低绘图性能
我的渲染时间仅为30 fps(通过NSTimer)......也许像iFighter这样的2D游戏会以更高的帧速率渲染?
也许游戏状态可以更快的速度更新?请注意,加速度值以100 Hz更新...因此我可能会在100 hz更新部分游戏状态
我的所有纹理都是PNG24 ...也许PNG8会有所帮助(由于尺寸较小等)
答案 0 :(得分:4)
用这个来调试图形问题真的很难。尝试使用openGL ES工具找出瓶颈所在。这很方便。另外,请查看openGL上的WWDC视频。他们真的很棒。
我注意到的一件事是你说“我只能以30 fps渲染”。这是否意味着你手动设置定时器或什么?这不是一个好方法,而是应该使用CADisplayLink
在屏幕想要更新时收到通知。它可以提高你的平滑度。
答案 1 :(得分:3)
以30fps完成Mo的答案......
您以30fps请求更新的事实并不意味着您将获得它。我不是iphone程序员,但我可以告诉你,如果你的帧渲染需要100毫秒,那么保证永远不会更新速度超过10fps。如果你实际上以10fps渲染,那么平滑度就会消失。
因此,请测量渲染所需的时间,以了解您获得的实际帧速率。至于如何针对iphone优化渲染,我会把这个留给比我更专业的人。