2011-12-13 78 views
0

我試圖發送兩個紋理片段着色器,但它似乎並沒有工作。着色器中的採樣器只能訪問一個紋理。OpenGL多紋理錯誤:無法訪問採樣器中的每個紋理

以下是我在我的代碼正在做

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, fbo_texture); 
glUniform1i(glGetUniformLocation(p,"fbo_texture"), 0); 

glActiveTexture(GL_TEXTURE1); 
glBindTexture(GL_TEXTURE_2D, tex_back); 
glUniform1i(glGetUniformLocation(p,"back"), 1); 

render stuff 

但是,如果我最後均勻後加入glActiveTexture(GL_TEXTURE0);,它的工作原理。此外,如果我指定GL_TEXTURE1然後GL_TEXTURE0,按順序,這也很好。我錯過了什麼?

編輯*

glActiveTexture(GL_TEXTURE2); 
glBindTexture(GL_TEXTURE_2D, fbo_texture); 
glUniform1i(glGetUniformLocation(p,"fbo_texture"), 2); 

glActiveTexture(GL_TEXTURE3); 
glBindTexture(GL_TEXTURE_2D, tex_back); 
glUniform1i(glGetUniformLocation(p,"back"), 3); 

作品...... 與GL_TEXTURE0的問題apparntly

+1

什麼是「它」的工作?你的片段着色器是什麼樣的? –

+0

不工作:黑屏或只訪問一個紋理和工作:完全合成好 – Simon

回答

0

我看到你叫你的紋理fbo_texture之一。我假設,這是一個FBO的渲染到紋理顏色附件。

在這種情況下,請確保在綁定FBO以進行渲染之後綁定紋理,反之亦然。

+0

這就是我一開始想的,但是當這段代碼執行時,fbo是無界的 – Simon