应该是每个纹理单元应用glEnable(GL_TEXTURE_2D)

Mon*_*ier 10 opengl

在OpenGL中,我一直都明白glEnable(GL_TEXTURE_1D),glEnable(GL_TEXTURE_2D)和/或glEnable(GL_TEXTURE_3D)(和相应的glDisable)是每个纹理单元参数.

最近我试图证实这一点,但没有找到任何明确的文件证实这个问题的任何一种方式.

简单地说,在代码中,我应该这样做

glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
... bind etc ... 

glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
... bind etc ...
Run Code Online (Sandbox Code Playgroud)

或这个

glEnable(GL_TEXTURE_2D);

glActiveTexture(GL_TEXTURE0);
... bind etc ...

glActiveTexture(GL_TEXTURE1);
.... bind etc ...
Run Code Online (Sandbox Code Playgroud)

我希望能找到一些清晰度.

Bah*_*bar 8

这是每个纹理单位.

从GL1.5规范,3.8.15:

每个纹理单元都启用并独立于其他纹理单元绑定到纹理对象


小智 7

确实是每个纹理单元.在我发现提到这一点,最近的文档明确是的Open GL 2.1规范(2006年更新)这里

在3.8.16节:纹理应用程序中

可能会在新规范中的某处提到它,但它们的重组很重.您可以在opengl org网站上查看所有Open GL版本规范(我想发布一个链接,但我似乎不能发布多个).

  • 实际上,它不会出现在最新的核心版本中,因为固定功能已被弃用然后被删除,而Enable正在控制固定功能状态.它对着色器没有任何影响. (6认同)