3

GLKViewユーザー入力に応じて Core Image の「レシピ」をスムーズにレンダリングするためにCore Image を適切に使用する方法の例を見つけるのに苦労しました。そのため、コア イメージ プログラミング ガイドGLKViewクラス リファレンスを読んだ後、機能するアプローチを思いつきました。ただし、それが有効かどうかはわかりませんので、誰かが問題がないことを確認するか、より良い方向に向けてくれることを願っています.

現在、私は aGLKViewと aを使用していGLKViewControllerます。はGLKView、 を実装する親ビュー コントローラに描画を委譲しますglkView:drawInRect:。描画メソッドはこれを行います:

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {
    // make glkView's background light gray instead of black
    glClearColor(backgroundRGB, backgroundRGB, backgroundRGB, 1.0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    // a custom object that holds a reference to a CIContext
    ImageEditingContext* context = [ImageEditingContext getInstance];

    // apply a core image recipe
    CIImage *outputImage = [context getFilteredPreviewCIImage];

    // draw the image
    CGRect inRect = outputImage.extent;
    inRect.origin.y = (self.glkView.contentScaleFactor * self.glkView.frame.size.height - inRect.size.height) / 2.0;
    [context.coreImageContext drawImage:outputImage inRect:inRect fromRect:outputImage.extent];
}

具体的には、最後の行が気になり[context.coreImageContext drawImage:outputImage inRect:inRect fromRect:outputImage.extent]ます。内からそのメソッドを呼び出すことは有効ですglkView:drawInRect:か? 前に述べたように、このアプローチはうまく機能しているように見えますが、OpenGL ES Analysis Instruments テンプレートを実行した後、私はそれを疑うようになりました。この問題がある行にフラグを立てました:

フラッシュなしのマルチコンテキスト レンダーバッファーの使用: レンダーバッファー #2 - アプリケーションは、その後のフラッシュ操作なしで、別のコンテキストで更新されたレンダーバッファー オブジェクトを使用しました。

私のGLKViewCIContextは両方とも同じ で設定されているEAGLContextため、エラー メッセージが何を指しているのかよくわかりません。どんな洞察も大歓迎です!

4

1 に答える 1