我正在尝试将两个纹理发送到片段着色器,但它似乎不起作用。在着色器中只能从采样器访问一个纹理。
以下是我在代码中所做的事情
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存在问题
答案 0 :(得分:0)
我看到你调用了一个纹理fbo_texture
。我假设,这是FBO的渲染到纹理颜色附件。
在这种情况下,请确保仅在取消绑定FBO以进行渲染后绑定纹理,反之亦然。