2013-10-15 23 views
6

我正在使用GPUIImage庫來開發iOS相機應用程序。有時,當應用程序在2-3分鐘之後中止了Xcode的給我上的應用程序崩潰,指着線路中的方法:神祕的應用程序與OpenGL崩潰

- (void)presentBufferForDisplay; 
{ 
    [self.context presentRenderbuffer:GL_RENDERBUFFER]; 
} 

什麼有可能會成爲這個崩潰的原因是什麼?我有一個非常長的相機設置,代碼本身在GPUImageContext類。我可能在這裏做錯了什麼?

+0

Xcode並不總是指向導致崩潰的行。例如,當應用程序崩潰時,它通常將我指向主線程,即使它沒有錯。所以這個錯誤可能來自你的一些渲染代碼。 – BlueSpud

回答

9

當您的應用程序在後臺運行(暫停)時,您根本無法訪問OpenGL ES。 GPUImage使用OpenGL ES處理它所做的一切。您必須確保應用程序完成向後臺轉換之前所做的所有GPUImage工作(過濾視頻,處理圖像)。

你需要監聽UIApplicationWillResignActiveNotification或填寫相關的委託回調爲過渡到後臺,並在那裏暫停任何相機捕獲(通過你的攝像頭輸入的-pauseCameraCapture法)或等待任何處理完(我相信一個到GPUImage串行調度隊列的同步調度將處理這個問題)。

有關此問題的相關討論可以在此處的GitHub問題頁面上找到:https://github.com/BradLarson/GPUImage/issues/197以及幾個相關問題。