4

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

4

2 回答 2

4

根据管理 OpenGL 上下文的内容,您可能不需要删除纹理。例如,请参阅此问题

不过,似乎确实有共识,最好自己清理,但在使用 C++ RAII 时要小心!如果在没有 OpenGL 上下文的情况下创建或销毁通过 RAII 管理 OpenGL 对象的 C++ 对象,则会发生未定义的行为。

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

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

于 2012-08-14T18:46:51.070 回答
2

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

然而,在自己之后进行清理始终是一个好习惯。

于 2012-08-14T19:55:06.133 回答