在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 ...
我希望能找到一些清晰度。
答案 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)
。