簡體   English   中英

OpenGL:關閉多個紋理單元

[英]OpenGL: Turn off multiple texture units

如何關閉多個紋理單元,因為它們會影響其他渲染部件。 我激活他們:

        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)禁用它。

請注意,對於着色器,所有這些都是多余的 - 您無法訪問那里的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM