2

2つのテクスチャをアタッチするFBOがあります。次に、FBOをバインドし、最初のテクスチャをシェーダーへの入力(バインド)として使用し、2番目のテクスチャに書き込みます。どちらもFBOにアタッチされています。glDrawBufferを使用してこれを試し、GL_COLOR_ATTACHMENT1を描画バッファーとして指定しましたが、成功しませんでした。とにかくこれは可能ですか?

編集

これが私がそれをやろうとする方法です:

GLuint tex0, tex1; // they are created elsewhere and bound to the fbo
glBindFramebuffer( GL_FRAMEBUFFER, fbo );

glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_2D, tex0 );

glDrawBuffer(GL_COLOR_ATTACHMENT1);

// render code

glReadBuffer(GL_COLOR_ATTACHMENT1);
glReadPixels(...);

しかし、glReadPixelsの結果は、私が期待したものとは異なります。ここで何か問題がありますか?

4

1 に答える 1

0

シェーダーでサンプリングしているテクスチャは、FBO にバインドしないでください。通常のテクスチャのように glBindTexture を使用してバインドするだけです。

サンプラーと FBO に同時にバインドされたテクスチャがある場合、未定義の動作が発生すると思います。

于 2012-07-09T20:25:10.313 に答える