OpenGL纹理ID的范围是多少?

jon*_*ham 12 c++ opengl graphics textures visual-c++

我有一个拥有属性Texture_ID的对象.我需要在构造函数中初始化Texture_ID的值,所以我想要一些OpenGL未使用的值来表示纹理尚未设置.

我不知道零(0)是否是一个好的值?如果有一个OpenGL应用于纹理ID的范围,我想要一个超出此范围的值.任何的想法?

Chr*_*ica 17

0是您要查找的值(表示未设置的纹理ID /未创建的纹理),因为0永远不是有效的纹理ID.

  • +1参见[这里](http://www.opengl.org/sdk/docs/man/xhtml/glBindTexture.xml)"的值零被保留以表示每个纹理目标的默认纹理". (8认同)
  • @Paul:您创建的任何纹理对象都将具有非零值.如果你打算使用这个类,那么零完全没问题. (3认同)
  • 实际上整个"默认纹理"的东西是OpenGL-1.0的时代错误,其中还没有纹理对象.要获得多个纹理,可以在绘制要纹理化的几何图形之前使用glTexImage,或者使用显示列表将纹理图像封装在其中; 这也是共享显示列表将在现代OpenGL中共享纹理的原因.由于没有纹理对象,只有纹理单元,OpenGL-1.1引入了术语"默认纹理"作为遗留(当时已经是)OpenGL-1.1程序的故障保护. (3认同)
  • @Paul他似乎是对的.但是关于OpenGL参考"默认纹理"只是"无纹理"或"没有应用程序创建纹理对象"的另一个术语.因此将0传递给`glBindTexture`不会导致错误,但它也没有任何效果(或未定义的效果,黑色纹理或其他东西).因此0非常适合表示单元化/无效纹理. (2认同)