我正在使用CADisplayLink以60 FPS执行名为gameLoop的功能,并且首先应用程序运行完美。然后在随机时间(可能是5秒或1分钟,fps下降到40 FPS左右。
经过几天的搜索论坛,调试,优化我的渲染,分析和分析我的应用程序后,我决定从gameLoop函数中删除所有内容,除了几行计算自上次调用gameLoop以来已经过了多长时间。我无法弄清楚为什么CADisplayLink以60 FPS的速度调用gameLoop一段时间,然后在gameLoop几乎没有任何内容时以40 FPS调用它。
我实现了暂停/取消暂停功能,该功能使显示链接无效并重新启动它。当我重新启动显示链接时,应用程序再次以60 FPS运行,直到它随机掉落。
提前感谢任何能够让我了解原因的人。
答案 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会在它的设置中执行此操作。