我有一个非常奇怪的错误。我在GLSL片段着色器中使用多个纹理,但如果未设置纹理0,则无法读取纹理1。
WORKS:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texA);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texB);
不工作:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, 0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texB);
在第二个例子中,texB没有正确读取,但在第一个例子中。我在绘制所有内容之前先调用它:
int samplerAID = mActiveShader->GetUniformID("TexSamplerA");
int samplerBID = mActiveShader->GetUniformID("TexSamplerB");
glUniform1i(samplerAID , 0);
glUniform1i(samplerBID , 1);
如果我删除片段着色器中对TexSamplerA的所有引用,则texB在示例#1中工作