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

时间:2012-08-11 01:45:55

标签: frame-rate cadisplaylink

我正在使用CADisplayLink以60 FPS执行名为gameLoop的功能,并且首先应用程序运行完美。然后在随机时间(可能是5秒或1分钟,fps下降到40 FPS左右。

经过几天的搜索论坛,调试,优化我的渲染,分析和分析我的应用程序后,我决定从gameLoop函数中删除所有内容,除了几行计算自上次调用gameLoop以来已经过了多长时间。我无法弄清楚为什么CADisplayLink以60 FPS的速度调用gameLoop一段时间,然后在gameLoop几乎没有任何内容时以40 FPS调用它。

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

提前感谢任何能够让我了解原因的人。

2 个答案:

答案 0 :(得分:1)

我决定尝试使用OpenGL ES 2.0和GLKit API来查看是否可以解决问题。在阅读了apple docs和一些教程之后,我移植了代码并使用Xcode分析器和Performance Detective对其进行了测试。 GLKViewController的Update和drawInRect函数以60 FPS调用,一切运行完美。

答案 1 :(得分:0)

如果您使用的是iOS 5,请务必将视图的不透明参数设置为YES。我猜测与其他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/