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

时间:2011-12-13 00:01:23

标签: opengl textures glut

我正在尝试将两个纹理发送到片段着色器,但它似乎不起作用。在着色器中只能从采样器访问一个纹理。

以下是我在代码中所做的事情

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存在问题

1 个答案:

答案 0 :(得分:0)

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

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