如何關閉多個紋理單元,因爲它們影響其他渲染部分。 激活我的他們說:OpenGL:關閉多個紋理單元
glActiveTexture(GL_TEXTURE0 + index);
glBindTexture(GL_TEXTURE_2D,
((MaterialSampler2D)specular).texture.getTOB());
shader.setTexture2(index);
有什麼樣glDeactivateTexture?
如何關閉多個紋理單元,因爲它們影響其他渲染部分。 激活我的他們說: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
我使用着色器,我不需要使用glEnable/glDisable(GL_TEXTURE_2D),是嗎?我用這個,它不能幫助我。 – itun 2011-04-18 16:40:47
確切地說,除了一些狡猾的驅動程序是錯誤的(我認爲有一個錯誤,一次影響ATI驅動程序的這個問題) – ltjax 2011-04-18 18:50:27