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