2010-07-24 58 views
2

我看是在談論與iOS的多任務來個什麼東西剛纔提到一個有趣WWDC video(會話105):如何在iOS 4上處理基於OpenGL ES的應用程序的多任務處理?

「任何GPU的使用,同時您的應用程序是在 無論後臺的規定 結果自動終止 該應用程序,包括任何對OpenGL的調用。「

如果整個應用程序都是基於OpenGL的,如何處理這個「需求」?

注:我問this question,因爲我的基於OpenGL的應用程序似乎在模擬器中執行了多任務處理,但在設備上卻沒有(iPhone 4)......該應用程序在設備上運行時自動終止。這可能是由於「低效率」的內存分配(當應用程序轉到後臺時,我不會釋放任何資源),或者可能是由於我剛剛瞭解的「無GPU使用」限制。

回答

3

您需要將繪製和更新(OpenGL調用)中的處理邏輯分開。然後,可以在進出背景狀態(applicationDidEnterBackground/applicationWillEnterForeground)時爲應用程序設置全局狀態,並使用該標誌跳過OpenGL繪圖調用(以及不應從背景狀態執行的任何其他代碼)。

0

參見在OpenGL ES Programming Guide for iOS

在具體的文檔,但應當注意的是,到glfinish在()的調用應被製成applicationDidEnterBackground的結果:和/或applicationWillResignActive :.

這是我的理解,如果所有OpenGL ES執行都是事件處理的結果,那麼您不需要使用全局「in foreground」標誌,因爲您的應用程序在處於後臺時不會處理任何事件。

相關問題