2

CADisplayLinkを使用して60FPSでgameLoopという関数を実行していますが、最初はアプリケーションが完全に実行されています。次に、ランダムな時間(5秒または1分である可能性があります)で、fpsは約40FPSに低下します。

フォーラムの検索、デバッグ、レンダリングの最適化、プロファイリング、アプリの分析を何日も行った後、gameLoopの最後の呼び出しからの経過時間を計算する数行を除いて、gameLoop関数からすべてを削除することにしました。CADisplayLinkがしばらくの間60FPSでgameLoopを呼び出し、その後gameLoopがほとんど何もしないときに40FPSで呼び出す理由がわかりません。

表示リンクを無効にして再起動する一時停止/一時停止解除機能を実装しました。表示リンクを再起動すると、ランダムにドロップするまで、アプリは再び60FPSで実行されます。

なぜこれが起こっているのかについて私に洞察を与えることができる人に事前に感謝します。

4

2 に答える 2

1

OpenGL ES 2.0 と GLKit API を試して、問題が解決するかどうかを確認することにしました。Apple ドキュメントといくつかのチュートリアルを読んだ後、コードを移植し、Xcode アナライザーと Performance Detective でテストしました。GLKViewController の Update および drawInRect 関数は 60 FPS で呼び出され、すべてが完全に実行されます。

于 2012-08-20T16:22:59.980 に答える