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

时间:2010-10-28 08:37:56

标签: 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 ...

或者

glEnable(GL_TEXTURE_2D);

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

glActiveTexture(GL_TEXTURE1);
.... bind etc ...

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

3 个答案:

答案 0 :(得分:8)

这是每个纹理单元。

从GL1.5规范,3.8.15:

  

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

答案 1 :(得分:7)

确实是每个纹理单位。我发现明确提到这一点的最新文档是Open GL规范2.1(2006更新)here

在3.8.16节:纹理应用

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

答案 2 :(得分:1)

如果您在OpenGL中使用GLSL着色器,则调用glEnable(GL_TEXTURE)不会产生影响。

此外,如果您打算转到OpenGL 3.x核心配置文件,请记住不推荐使用glEnable(GL_TEXTURE)