0

OpenGL ES 2.0を使用してiPhoneに後処理(ぼかし、ブルームなど)を実装しようとしています。私はいくつかの問題に直面しています。2番目のレンダリングステップでレンダリングすると、シーンではなく完全に黒いクワッドを画面に描画することになります(テクスチャデータが欠落しているように見えます)。そのため、原因が単一のFBOを使用しているのではないかと思います。次のように単一のFBOを使用するのは正しくありませんか?

最初のパス(通常のシーンレンダリング)の場合、

  • テクスチャをCOLOR_ATTACHMENT_0としてアタッチし、テクスチャにレンダリングします。 glFramebufferTexture2D(GL_FRAMEBUFFER、GL_COLOR_ATTACHMENT0、GL_TEXTURE_2D、texturebuffer、0)

2回目のパス(後処理)では、

  • カラーレンダーバッファをCOLOR_ATTACHMENT_0にアタッチします glFramebufferRenderbuffer(GL_FRAMEBUFFER、GL_COLOR_ATTACHMENT0、GL_RENDERBUFFER、colorRenderbuffer)
  • 次に、最初のパスのテクスチャを使用して、画面上でクワッドとしてレンダリングします。
4

2 に答える 2

1

いいえ、そのFBOの使用法は問題ありません。原因は、テクスチャ(texturebuffer)のMIN / MAGフィルタを設定しなかったことが原因である可能性が非常に高く、バインド後、glTexParameterを使用してGL_MIN_FILTERおよびGL_MAG_FILTERをGL_NEARESTまたはGL_LINEARに設定すると、テクスチャが機能するはずです。

于 2011-01-17T11:46:56.727 に答える
1

マティアスが述べているように、あなたのデザインはうまく見えます。私は自分と同じようなことをして、うまく機能させました。

シェーダーを使用してカメラ画像を処理するサンプルアプリケーションを作成しました。これはここglReadPixels()からダウンロードできますが、結果を画面上のテクスチャに直接マッピングするのではなく、画面外の値を処理ルーチンに取り込むために使用します。あなたはそれをするためにそれを修正することができるかもしれません。

それ以外の場合は、ここでより複雑なシェーダーサンプルアプリケーションを作成しました。これは、ある部分でシーンを立方体にマップされたテクスチャにレンダリングし、そのテクスチャを処理の第2段階にフィードします。これは、OpenGLES2.0シェーダーを使用したテクスチャへのレンダリングとテクスチャの使用を示しているはずです。

たぶん、これらはあなたの実装が失敗しているところに光を当てることができます。

于 2011-01-17T19:01:27.023 に答える