我是否必须在程序存在之前删除我创建的所有纹理(使用glDeleteTextures),或者OpenGL是否自行删除纹理?
答案 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客户端之间共享对象,因此只有在有权访问它们的最后一个客户端终止后才能释放它们。
然而,自己清理后总是一个好习惯。