【问题标题】:CADisplayLink on iPhone 3GS and iPhone 4 drops from 60 to 40 FPS randomlyiPhone 3GS 和 iPhone 4 上的 CADisplayLink 随机从 60 FPS 下降到 40 FPS
【发布时间】:2012-08-11 01:45:55
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: frame-rate cadisplaylink


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您使用的是 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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-03
        • 1970-01-01
        • 2023-01-28
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多