0
我一直在追逐我的游戏中的错误,我想我终于找到了问题。丢失opengl上下文后处理内存警告的最佳步骤
我有一个内存管理例程,在内存警告中调用,它基本上检查什么是加载和不需要,并释放。 我的大部分内存都被用在opengl的纹理中,除了纹理之外,我只需要转储一些对象来保持系统的快乐,即使是在3G上使用它的内存有限。
现在我的问题,有几次我失去了openGL上下文,例如在用MPMoviePlayerController播放电影时,或者调用GC系统视图时。 GC或MPMovie的
几次负荷将与我的内存管理程序一致被调用,这是我觉得崩溃的比赛,因为我没有OpenGL上下文,我得到:
malloc: *** error for object 0x471c9080: pointer being freed was not allocated
当试图glDeleteTextures。
现在我正在更改我的代码,所以我不尝试删除无效上下文中的纹理(仍然检查如何执行此操作),但是我仍然留下了当我得到内存警告在opengl上下文中断。
我看只有一个选项
- 调用的东西,会让我失去方面的尝试和释放内存
之前,我特别不喜欢这个选择,因为它介绍了一些操作的滞后。
- 有人看到更好的方法吗?
- 我对问题的分析正确吗? (当使用MPlayer和GC时,我真的会失去opengl上下文)
- 任何其他释放纹理的方法?
THX
我确实有一个参考我的EAGLContext,设置它当前MPPlayer电影播放停止电影,并使其消失。目前的情景比较并没有发生在我身上,但它当然有用,thx。仍然需要找到一种方法来删除这些纹理... – led42 2011-12-30 16:43:07