OpenGL:关闭多个纹理单元



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

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

有没有像glDeactivateTexture这样的东西?

glActiveTexture不激活纹理单元。它只是选择你当前正在修改的纹理单元(是的,OpenGL的对象状态管理是可怕的)。你用glEnable(<texture-target>)glDisable(<texture-target>)激活纹理。在您的示例中,目标是GL_TEXTURE_2D

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

请注意,所有这些都是多余的着色器-你可以不访问那里的值

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

相关内容

  • 没有找到相关文章