将纹理 ID 提供给 glDeleteBuffers 的 openGL 行为是什么?
What is the openGL behavior for feeding a texture ID to the glDeleteBuffers?
(而不是使用 glDeleteTextures)
它是未定义的吗?
它会删除纹理缓冲区吗? (缓冲区就是缓冲区。不是吗?)
不要那样做。
来自文档,
glDeleteBuffers
silently ignores 0's and names that do not correspond to existing buffer objects.
所以,这很糟糕,但不一定会使您的程序崩溃。您的程序可能只是发现它的一些缓冲区对象被意外删除(好吧,如果您尝试映射缓冲区但不检查错误,这 将 使您的程序崩溃)。
未定义。
OpenGL 实现可能会跨纹理和缓冲区使用一组名称,在这种情况下,它可能会正常工作。然而,我曾经在开发中的标题上调用了错误的 OSX glDelete,它偶尔会导致 OS 崩溃(需要重启),所以这绝对是一件非常危险的事情。
(而不是使用 glDeleteTextures)
它是未定义的吗?
它会删除纹理缓冲区吗? (缓冲区就是缓冲区。不是吗?)
不要那样做。
来自文档,
glDeleteBuffers
silently ignores 0's and names that do not correspond to existing buffer objects.
所以,这很糟糕,但不一定会使您的程序崩溃。您的程序可能只是发现它的一些缓冲区对象被意外删除(好吧,如果您尝试映射缓冲区但不检查错误,这 将 使您的程序崩溃)。
未定义。
OpenGL 实现可能会跨纹理和缓冲区使用一组名称,在这种情况下,它可能会正常工作。然而,我曾经在开发中的标题上调用了错误的 OSX glDelete,它偶尔会导致 OS 崩溃(需要重启),所以这绝对是一件非常危险的事情。