删除opengl中的纹理

在程序存在之前是否必须删除我创build的所有纹理(使用glDeleteTextures),还是OpenGL自己删除纹理?

根据管理OpenGL上下文的内容,您可能不需要删除纹理。 例如,看到这个问题 。

虽然似乎有一致意见,但自己清理后很好,但使用C ++ RAII时要小心! 如果通过RAII管理OpenGL对象的C ++对象在没有OpenGL上下文的情况下被创建或销毁,则会发生未定义的行为。

请参阅: 面向对象的语言问题

OpenGL API和OpenGL对象不直观地映射到C ++ OOP原则。

一旦所有访问它们的上下文都被销毁,OpenGL资源就会被隐式释放。 当客户端终止时,进程的OpenGL上下文会被销毁; 但是在间接GLX上下文对象的情况下,可以在X11客户端之间共享,所以只有在最后一个有权访问的客户端终止之后,它们才能被释放。

尽管如此,清理后仍然是一个好习惯。