OpenGL FBO多个纹理

时间:2012-07-09 20:18:34

标签: opengl textures fbo

我有一个FBO,我附加了两个纹理。然后我想绑定FBO,使用第一个纹理作为输入(绑定)到着色器并写入第二个纹理,两者都附加到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的结果与我的预期不同。你能在这看到任何问题吗?

1 个答案:

答案 0 :(得分:0)

您在着色器中采样的纹理不应绑定到FBO。只需使用glBindTexture绑定它就像普通纹理一样。

如果您的纹理同时绑定到采样器和FBO,我相信您会得到未定义的行为。