如何关闭多个纹理单元,因为它们影响到其他渲染部分。我激活它们:
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