2012-07-09 152 views
1

我有一個FBO我附加了兩個紋理。然後我想綁定FBO,使用第一個紋理作爲輸入(綁定)到着色器並寫入第二個紋理,兩者都附加到FBO。我嘗試使用glDrawBuffer指定GL_COLOR_ATTACHMENT1作爲繪製緩衝區,但沒有成功。這可能嗎?OpenGL FBO多紋理

編輯

這裏是我嘗試這樣做:

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結果跟我想象的不同。你能看到這裏有什麼問題嗎?

+0

我們可以看到一些代碼嗎? – 2012-07-09 20:56:13

回答

0

您在着色器中採樣的紋理不應綁定到FBO。只需使用glBindTexture就可以像正常紋理那樣綁定它。

我相信你會得到未定義的行爲,如果你有紋理同時綁定到採樣器和FBO。

+0

-1:錯誤。將紋理附加到FBO並從着色器採樣是完全合法的。當你將*寫入你正在採樣的圖像時,它只會變得不確定。 – 2012-07-09 20:56:00

+0

嗨, 那麼最終是否合法上面的情況呢? – Alin 2012-07-17 20:54:16