以前は、フレームとレンダー バッファーの手書きの初期化とレンダリング ループを使用して、いくつかのアニメーションを描画していました。今、私は自分のものを GLKit View Controller に移動しようとしていますが、以前のアプリケーションと比較して、場合によってはひどくパフォーマンスが低下しています。
私のアニメーションは 4 つのシーンに分かれており、それぞれに独自の頂点シェーダーとフラグメント シェーダー、頂点データとテクスチャ データ、gl プログラムなどがあります。また、現時点でどのシーンをレンダリングするかを定義するクラスもあり、インスタンスを作成および破棄します。必要に応じてそれらの。[sceneManager draw]
レンダリング ループでのみ呼び出し
ます。
したがって、GLKit View Controller に移動して、それをサブクラス化し、次のような呼び出しを追加しました。
-(void) glkView:(GLKView *)view drawInRect:(CGRect)rect
{
if (!_myManagerInstance.animationFinished) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0, 0.0, 0.0, 1.0);
[_myManagerInstance draw];
} else {
self.paused=true;
}
}
問題なく動作しますが、アニメーションが著しく遅れます (最悪の場合、約 15 FPS)。OpenGLES のパフォーマンスについてアプリをプロファイリングすると、大量の冗長な呼び出しが示されましたが、これは私のコードからのものではありません。画像を参照してください。同じ悩みを持つ方の投稿を見つけました。それで、私はGLKit VCを正しい方法で使用していますか? それとも、設定が足りないだけですか?