将生成的ID的glGenTextures(...),glGenFramebuffers(...)永远是0?更具体地说,我可以使用零作为未初始化纹理的id,还是需要使用-1?
没有glGen*函数会返回0,尽管有时它会引用默认对象.在纹理的情况下,您可以在glDeleteTextures的文档中找到相应的信息.在这种情况下,0是默认纹理,永远不会返回glGenTextures.
我需要使用-1吗?
您不能使用 -1,因为对象名称是无符号整数。
由 glGenTextures(...)、glGenFramebuffers(...) 生成的 id 是否会为 0?
不。
更具体地说,我可以使用零作为未初始化纹理的 id
对于纹理,是的。
对于大多数 OpenGL 对象,对象 0 相当于一个 NULL 指针:它不是一个对象。但是,对于某些OpenGL 对象,对象 0 确实具有含义。
例如,帧缓冲区对象 0 是默认的帧缓冲区。从技术上讲,纹理对象 0 仍然是一个纹理。然而,纹理对象 0 的行为是如此古怪,以至于最好完全忽略这一点并且永远不要明确使用纹理对象 0。