0是有效的OpenGL纹理ID吗?

Tal*_*man 34 opengl

glGenTextures(1, &textureid);
Run Code Online (Sandbox Code Playgroud)

假设纹理是成功创建的,纹理是否为0?

Chr*_*yle 34

用于glGenTextures手册说,也看到glIsTexture ; 后者将(根据)总是返回GL_FALSE纹理名称0.因此,0不能是有效的纹理名称.

  • 最后一句不正确,你永远不会_generate_ name**0**,但它在OpenGL中是一个非常真实的名字.它有一个相当独特的属性,纹理**0**是一次性的每种类型的纹理目标!换句话说,对于`GL_TEXTURE_2D`,有一个名为**0**的纹理,对于`GL_TEXTURE_3D`,还有另一个名为**0**的纹理.**0**根据绑定它的位置引用不同的纹理,可能没有有效的状态设置,但始终是有效的名称 - 只是不会通过调用`glGenTextures(...)生成的名称. (6认同)

Chr*_*oph 11

OpenGL Spec 3.1:第157页:

如果删除纹理对象,就好像绑定到该纹理对象的所有纹理单元都会回弹到纹理对象零.

在我看来,零命名纹理是一个特殊的纹理