2010-08-04 57 views
1

现在,我正在使用Oolong Engine在iPhone上玩OpenGL ES。这可能是一个愚蠢的问题,但是在应用程序退出时,在OpenGL之后清理它有多必要?我的问题是我有一个管理加载模型的静态向量,并且松散地确保模型不会被加载两次。因此,维也纳组织和纹理的所有句柄都存储在static map<Model>Model对象中。当应用程序关闭时,地图似乎不会调用各个Model对象上的析构函数,因此它们最终不会调用glDeleteBuffers()清理iPhone上的OpenGL后

我的问题是,这是完全必要的,如果应用程序足够小,我永远不会卸载并重新加载运行时的内存模型?或者OpenGL只是为我照顾这一切?我可以创建一个从应用程序的dealloc中调用的静态CleanUp()函数,但是值得吗?

回答

3

当实际的应用程序退出时,所有资源都会被清除,包括所有总帐。别担心,操作系统不会让你的流氓应用程序意外泄漏一堆GPU资源。

在Open GL中管理资源通常是您在应用程序生命过程中应该做的事情,但听起来您知道如何执行此操作。

+0

太棒了!它被认为是确保它发布的“最佳实践”,还是它不担心的事情之一? – Perrako 2010-08-04 02:00:52

+0

当然,这种事情是最佳实践,但通常在所有管理数据结构的背景下。换句话说,如果你的所有数据都有很好的集合和容器,那么他们的正常清理工作(通过析构函数或你有什么)很可能会照顾到资源。除此之外,当流程被拆除时,不要担心。我会说一个不好的做法是有意编写不做清理的代码。 (仅仅因为你“知道你可以”而将东西从dealloc方法等中排除出去。) – 2010-08-04 04:22:42