iPhone 3GS和iPhone 4上的CADisplayLink从60 FPS随机下降到40 FPS



我正在使用CADisplayLink以60 FPS的速度执行一个名为gameLoop的功能,起初应用程序运行良好。然后在随机时间(可能是 5 秒或 1 分钟),fps 下降到 40 FPS 左右。

经过几天的搜索论坛、调试、优化渲染、分析和分析我的应用程序,我决定从 gameLoop 函数中删除所有内容,除了几行计算自上次调用 gameLoop 以来已经过去了多长时间。我不明白为什么CADisplayLink以60 FPS调用gameLoop一段时间,然后在gameLoop几乎什么都不做时以40 FPS调用它。

我实现了一个暂停/取消暂停功能,该功能使显示链接无效并重新启动它。当我重新启动显示链接时,该应用程序再次以 60 FPS 的速度运行,直到它随机下降。

提前感谢任何能给我一些关于为什么会发生这种情况的人。

我决定尝试OpenGL ES 2.0和GLKit API,看看是否能解决这个问题。在阅读了苹果文档和一些教程后,我移植了代码并使用Xcode分析器和性能侦探对其进行了测试。GLKViewController的更新和drawInRect函数以60 FPS的速度调用,一切都运行良好。

如果您

使用的是iOS 5,请确保将视图的不透明参数设置为"是"。我猜用其他 CoreAnimation 图层合成屏幕会导致速度变慢。我猜GLKIT API在它的设置中会做到这一点。

http://www.cocos2d-iphone.org/forums/topic/app-often-but-not-always-runs-at-40-fps-at-startup-rather-than-60-fps/

最新更新