OpenGL:关闭多个纹理单元

发布于 2024-11-02 06:15:32 字数 287 浏览 6 评论 0原文

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

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

有类似 glDeactivateTexture 的东西吗?

How to turn off multiple texture units because they influence to other render parts.
I activate my them:

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

Is there something like glDeactivateTexture?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野心澎湃 2024-11-09 06:15:32

glActiveTexture 不激活纹理单元。它只是选择当前正在修改的纹理单元(是的,OpenGL 的对象状态管理很糟糕)。
您可以使用 glEnable()glDisable() 激活纹理。在您的情况下,目标将为GL_TEXTURE_2D

因此,回答您的问题:使用 glActiveTexture(GL_TEXTURE0+i) 选择纹理单元 i,然后使用 glDisable(GL_TEXTURE_2D) 禁用它。

请注意,所有这些对于着色器来说都是多余的 - 您只是无法访问那里的值。

glActiveTexture does not activate texture-units. It merely selects which texture-unit you're currently modifying (yes, OpenGL's object state managing is horrible).
You activate textures with glEnable(<texture-target>) and glDisable(<texture-target>). In your case, the target would be GL_TEXTURE_2D.

So to answer your question: Select the texture-unit i by using glActiveTexture(GL_TEXTURE0+i) and then disable it with glDisable(GL_TEXTURE_2D).

Note that all this is redundant with shaders - you can just not access the values there.

开始看清了 2024-11-09 06:15:32

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文