如何关闭多个纹理单元,因为它们会影响其他渲染部件。 我激活他们:
glActiveTexture(GL_TEXTURE0 + index);
glBindTexture(GL_TEXTURE_2D,
((MaterialSampler2D)specular).texture.getTOB());
shader.setTexture2(index);
是否有类似glDeactivateTexture的东西?
答案 0 :(得分:10)
glActiveTexture
不会激活纹理单位。它只选择你当前修改的纹理单元(是的,OpenGL的对象状态管理是可怕的)。
您可以使用glEnable(<texture-target>)
和glDisable(<texture-target>)
激活纹理。在您的情况下,目标是GL_TEXTURE_2D
。
所以回答你的问题:使用i
选择纹理单元glActiveTexture(GL_TEXTURE0+i)
,然后使用glDisable(GL_TEXTURE_2D)
将其停用。
请注意,对于着色器而言,所有这些都是多余的 - 您无法访问那里的值。
答案 1 :(得分:1)
你的意思是像glDisable? http://www.opengl.org/sdk/docs/man/xhtml/glEnable.xml