このアプリは、OpenGL ES2 と GLKit フレームワーク、および GLKitViewController によって提供されるレンダリング/更新ループを使用します。以前は iOS7.1 の iPad2 で安定した 60 fps で実行されていましたが、iPad2 を iOS8.1 に更新すると、まったく同じコードが 56 ~ 59 FPS の間で変動するようになりました。(ただし、CPU 使用率は以前のように 40 ~ 60% のままです)。
プロファイリングにより、OpenGL 描画コマンドが以前よりもはるかに多くの CPU 時間を使用していることが明らかになりました。最大の変更点は、"GLKBaseEffect prepareToDraw" の呼び出しに以前よりもはるかに時間がかかることです。
(このアプリは、レンダリング ループ中のさまざまな時点で再構成される単一の GLKBaseEffect を使用するため、毎回 prepareToDraw を呼び出す必要があります。GLKBaseEffect の複数のインスタンスを使用することで最適化できる可能性があることに気付きました。これについては後で検討していました。 、しかし、iOS7.1でのパフォーマンスはそのままでした)
現在、Instruments の OpenGL ES アナライザー トレースを調べて、"GLKBaseEffect prepareToDraw" によって生成された OpenGL 呼び出しを特定し、異常と思われるものがあるかどうかを確認しています。
この時点でどのように進行するかについてのガイダンスに非常に感謝しています-iOS8.1でGLKBaseEffect prepareToDrawの呼び出しに時間がかかるのはなぜですか?