OpenGL多纹理错误:无法访问采样器中的每个纹理

OpenGL多纹理错误:无法访问采样器中的每个纹理

问题描述:

我试图发送两个纹理片段着色器,但它似乎并没有工作。着色器中的采样器只能访问一个纹理。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

我看到你叫你的纹理fbo_texture之一。我假设,这是一个FBO的渲染到纹理颜色附件。

在这种情况下,请确保在绑定FBO以进行渲染之后绑定纹理,反之亦然。

+0

这就是我一开始想的,但是当这段代码执行时,fbo是*的 – Simon