我有一个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的结果与我所预期的不同。你能看到这里有什么问题吗?
发布于 2012-07-09 20:25:10
在着色器中采样的纹理不应该绑定到FBO。只需像普通纹理一样使用glBindTexture绑定它。
我相信,如果你有一个纹理同时绑定到一个采样器和一个FBO,你会得到未定义的行为。
https://stackoverflow.com/questions/11402461
复制相似问题