应该是每个纹理单元应用glEnable(GL_TEXTURE_2D)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应该是每个纹理单元应用glEnable(GL_TEXTURE_2D)相关的知识,希望对你有一定的参考价值。
在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 ...
我希望能找到一些清晰度。
答案
确实是每个纹理单元。我发现明确提到的最新文档是Open GL规范2.1(2006更新)here
在3.8.16节:纹理应用程序中
可能会在新规范中的某处提到它,但它们的重组很重。您可以在opengl org网站上查看所有Open GL版本规范(我想发布一个链接,但我似乎不能发布多个)。
另一答案
这是每个纹理单位。
从GL1.5规范,3.8.15:
每个纹理单元都启用并独立于其他纹理单元绑定到纹理对象
另一答案
如果你在OpenGL中使用GLSL
着色器,那么调用glEnable(GL_TEXTURE)
就没有影响。
此外,如果您打算继续使用OpenGL 3.x核心配置文件,请记住不推荐使用glEnable(GL_TEXTURE)
。
以上是关于应该是每个纹理单元应用glEnable(GL_TEXTURE_2D)的主要内容,如果未能解决你的问题,请参考以下文章