2011-01-17 12 views
0

OpenGL ES 2.0を使用してiPhoneでポスト処理(ぼかし、ブルームなど)を実装しようとしています。私はいくつかの問題にぶつかっています。 2番目のレンダリングステップでレンダリングすると、シーンの代わりに画面に完全に黒いクワッドを描画してしまいます(テクスチャデータが欠落しているように見えます)ので、原因が単一のFBOを使用しているのかどうか疑問に思っています。次のように1つのFBOを使用するのは間違っていますか?最初のパス(定期的なシーンのレンダリング)のためにOpenGL ES 2.0を搭載したFBO 1台でiPhoneの後処理を行う?

  • 私はCOLOR_ATTACHMENT_0として質感を添付し、テクスチャにレンダリングします。 glFramebufferTexture2D(GL_FRAMEBUFFER、GL_COLOR_ATTACHMENT0、GL_TEXTURE_2D、texturebuffer、0)は、第2パス(後処理)について

  • IはCOLOR_ATTACHMENT_0 glFramebufferRenderbuffer(GL_FRAMEBUFFER、GL_COLOR_ATTACHMENT0に色レンダを取り付けます、GL_RENDERBUFFER、colorRenderbuffer)
  • 次に、最初のパスのテクスチャを使用して、画面上のクワッドとしてレンダリングします。

答えて

1

いいえ、FBOの使用は問題ありません。原因はあなたのテクスチャのテクスチャ(テクスチャバッファ)のMIN/MAGフィルタを設定していないこと、バインディング後にglTexParameterを使ってGL_MIN_FILTERとGL_MAG_FILTERをGL_NEARESTまたはGL_LINEARに設定していることです。

+0

あなたの答えをありがとう。そのような使用を確認するために私に指摘できるリソースはありますか? (私はあなたを信じていませんが、参考になるでしょう) また、私はすでにMIN/MAGフィルターを設定しているので、それは他のものでなければなりません。あなたが考えることができる他の共通の落とし穴がありますか? – Jing

+0

下記のように、問題は似ていました。私のテクスチャは2の累乗にならない大きさになっていませんでした。あなたの答えは正しい場所を探してくれました。 – Jing

1

Matiasが述べているように、デザインは上手く見えます。私は自分自身で何か類似したことをして、うまくいきました。

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

それ以外の場合は、複雑なシェーダサンプルアプリケーションhereを作成しました.1つの部分でシーンをキューブマップテクスチャにレンダリングし、そのテクスチャを処理の第2段階に送ります。これは、OpenGL ES 2.0シェーダでのテクスチャへのレンダリングとその使用方法を示しているはずです。

これらは、実装が失敗している場所を明らかにする可能性があります。

+0

問題は、テクスチャが2の累乗(512x512)ではなく320x480にサイズ変更されていたことでした。ありがとう、コードは非常に有用だった。 – Jing

関連する問題