在opengl中删除纹理

时间:2012-08-14 18:14:46

标签: c++ windows opengl textures

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

2 个答案:

答案 0 :(得分:3)

根据管理OpenGL上下文的内容,您可能不需要删除纹理。有关示例,请参阅this question

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

请参阅:The Object Oriented Language Problem

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

答案 1 :(得分:1)

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

然而,自己清理后总是一个好习惯。