2

glGenTextures(...)生成的id 会glGenFramebuffers(...)不会是 0?更具体地说,我可以使用零作为未初始化纹理的 id,还是需要使用 -1?

4

2 回答 2

6

没有glGen*函数返回 0,尽管有时它引用默认对象。对于纹理,您可以在glDeleteTextures的文档中找到相应的信息。在这种情况下,0 是默认纹理,它永远不会被glGenTextures.

于 2013-05-22T08:27:13.140 回答
5

我需要使用-1吗?

您不能使用 -1,因为对象名称是无符号整数。

glGenTextures(...), glGenFramebuffers(...) 生成的 id 会不会是 0?

不。

更具体地说,我可以使用零作为未初始化纹理的 id

对于纹理,是的。

对于大多数 OpenGL 对象,对象 0 相当于一个 NULL 指针:它不是一个对象。但是,对于某些OpenGL 对象,对象 0 确实有意义

例如,帧缓冲区对象 0 是默认帧缓冲区。从技术上讲,纹理对象 0 仍然是纹理。但是,纹理对象 0 的行为非常奇怪,最好完全忽略这一点,并且永远不要明确使用纹理对象 0。

于 2013-05-22T08:25:04.910 回答