1

私はOpenGLESを使用してiOSでカスタムUIフレームワークを作成しています。ユースケースは、フレームごとに更新されないもの(ゲームなど)のように、アプリケーション用です。これまでのところ、GLKViewControllerのデフォルトの動作は、約30fpsの速度で画面を再描画することであるように思われます。UIは、リソースの使用量を減らすために必要な場合にのみ再描画するのが一般的です。ユーザーが何もしていないときにGPUを利用して、余分なバッテリー電力を消費しないようにしたいと思います。

テストとして画面をクリアして描画するのは1回だけでしたが、プロファイラーから、初期化されていないカラーバッファーが表示されているという警告が表示されました。

調べてみると、次のドキュメントが見つかりました:http: //developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Reference/EAGLDrawable_Ref/EAGLDrawable/EAGLDrawable.html

ドキュメントには、フラグkEAGLDrawablePropertyRetainedBackingがあると記載されています。これをYESに設定すると、バックバッファーは前のフレームで描画されたものを保持できます。ただし、これは推奨されておらず、パフォーマンスとメモリの問題を引き起こすことも示されています。これは、私が最初に避けようとしていることです。

すべてのフレームを描画するのではなく、両方の方法を試す予定ですが、誰かがこの状況に遭遇したかどうか知りたいです。あなたは何をお勧めします?フレームごとにすべてを30回再描画することは、私が想定しているほど大したことではありませんか?

4

2 に答える 2

2

この場合、GLKViewControllerメインループに単純なアニメーションタイマーを提供することが目的であるため、を使用しないでください。代わりに、ビューはUIViewControllerの他のサブクラス(独自に作成したものを含む)が所有でき、setNeedsDisplay/drawRect他のすべてのUIKitビューで使用される通常のシステムに依存できます。

于 2012-05-22T03:39:10.297 に答える
1

画像を保持するのはバックバッファではなく、別のバッファです。おそらく、あなたのビューのために特別に作成された別のバッファ。

レンダリングループを一時停止するには、いつでもをpausedオンに設定できます。GLKViewController

于 2012-05-22T00:44:20.547 に答える