OpenGL ESビューでiOSアプリケーションを作成しています。 3Dビューの上に、私はCocoa Touchを使用してさまざまなGUIビットを描画します。CPU負荷が高いUIView再描画(iOS)
これはフレームレートが良好であれば問題なく動作します。しかし、CPUの負荷が高くなると(GLESビューが20-ish FPSに低下)、次のUIKit表示サイクルが進んでいるようです。
具体的には、さまざまなUIViewサブクラスに基づいてツールチップビューを表示しようとしています。表示するときは、ツールチップのラベルのテキストを更新し、その背景をサイズ変更し、メインUIViewのhiddenをNOに設定し、setNeedsDisplayとsetNeedsLayoutを呼び出します。
フレームレートが低い(CPU負荷が高い)場合、次の表示サイクルは無期限にプッシュされるようです。しかし、直ちにCPU負荷が低下すると、ビューは期待どおりに表示されます。
私の3Dエンジンの再描画の間にUIKitで描画サイクルを引き起こす方法はありますか?他のアイデア?
すべてのロジックと1つのスレッドで実行されている図面(彼らは私のアプリで行うもの)大丈夫です:
をここでは、関連するドキュメントがあります。ポイントは、高いCPU負荷は、私が間違いなくメインスレッドをブロックしていなくても、UIKitの再描画を無期限に進めるようです。 UIKitは、CPU負荷が高いときに意図的に再描画をスキップしているようです。これは私が特定の場合に防ぐことです。 – Simplex