将纹理ID提供给glDeleteBuffers的openGL行为是什么?

将纹理ID提供给glDeleteBuffers的openGL行为是什么?,opengl,buffer,Opengl,Buffer,(而不是使用glDeleteTextures) 它是未定义的吗 它会删除纹理缓冲区吗?(缓冲区就是缓冲区。不是吗?不要这样做 从文件来看 glDeleteBuffers自动忽略与现有缓冲区对象不对应的0和名称 所以,这很糟糕,但不一定会使程序崩溃。您的程序可能只是发现一些缓冲区对象被意外删除(如果您尝试映射缓冲区但不检查错误,这将使程序崩溃)。不要这样做 从文件来看 glDeleteBuffers自动忽略与现有缓冲区对象不对应的0和名称 所以,这很糟糕,但不一定会使程序崩溃。您的程序可能只是发现

(而不是使用glDeleteTextures)

它是未定义的吗
它会删除纹理缓冲区吗?(缓冲区就是缓冲区。不是吗?

不要这样做

从文件来看

glDeleteBuffers
自动忽略与现有缓冲区对象不对应的0和名称

所以,这很糟糕,但不一定会使程序崩溃。您的程序可能只是发现一些缓冲区对象被意外删除(如果您尝试映射缓冲区但不检查错误,这将使程序崩溃)。

不要这样做

从文件来看

glDeleteBuffers
自动忽略与现有缓冲区对象不对应的0和名称

所以,这很糟糕,但不一定会使程序崩溃。您的程序可能只是发现它的一些缓冲区对象被意外删除(如果您尝试映射缓冲区但不检查错误,这将使您的程序崩溃)。

它未定义

OpenGL实现可能会跨纹理和缓冲区使用一组名称,在这种情况下,它可能会正常工作。然而,我曾经在开发中的一个标题上在OSX上调用了错误的glDelete,它偶尔会导致操作系统崩溃(需要一个电源循环),所以这样做肯定是非常危险的

它没有定义

OpenGL实现可能会跨纹理和缓冲区使用一组名称,在这种情况下,它可能会正常工作。然而,我曾经在开发中的一个标题上在OSX上调用了错误的glDelete,它偶尔会导致操作系统崩溃(需要一个电源循环),所以这样做肯定是非常危险的

明白了:-)谢谢!明白了:-)谢谢!