2

以前は、フレームとレンダー バッファーの手書きの初期化とレンダリング ループを使用して、いくつかのアニメーションを描画していました。今、私は自分のものを 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を正しい方法で使用していますか? それとも、設定が足りないだけですか?

4

0 に答える 0