5

如何关闭多个纹理单元,因为它们会影响其他渲染部分。我激活我的它们:

        glActiveTexture(GL_TEXTURE0 + index);
        glBindTexture(GL_TEXTURE_2D,
               ((MaterialSampler2D)specular).texture.getTOB());
        shader.setTexture2(index);

有类似 glDeactivateTexture 的东西吗?

4

2 回答 2

11

glActiveTexture不激活纹理单元。它只是选择您当前正在修改的纹理单元(是的,OpenGL 的对象状态管理很糟糕)。glEnable(<texture-target>)您使用和激活纹理glDisable(<texture-target>)。在您的情况下,目标是GL_TEXTURE_2D.

所以要回答你的问题:使用选择纹理单元,然后i使用禁用它。glActiveTexture(GL_TEXTURE0+i)glDisable(GL_TEXTURE_2D)

请注意,所有这些对于着色器来说都是多余的——您不能访问那里的值。

于 2011-04-18T16:02:45.313 回答
1

你的意思是glDisable之类的东西?http://www.opengl.org/sdk/docs/man/xhtml/glEnable.xml

于 2011-04-18T15:52:27.900 回答