奇怪的GLSL / Opengl Bug:多个采样器

时间:2014-08-21 17:46:04

标签: opengl textures glsl

我有一个非常奇怪的错误。我在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中工作

0 个答案:

没有答案