2

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

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

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

提前感谢任何可以让我了解为什么会发生这种情况的人。

4

2 回答 2

1

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

于 2012-08-20T16:22:59.980 回答
0

如果您使用的是 iOS 5,请确保将视图的 opaque 参数设置为 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/

于 2013-06-22T03:21:56.280 回答