2012-05-16 73 views
10

我對我的應用iOS有點小問題。 當我使用iOS模擬器5.1 ipad/iphone的應用程序正在工作,但是當我使用真正的iOS設備(iPad和iPhone 5.1太)移動背景,iOS 5.1上的OpenGL ES崩潰

當點擊主頁按鈕後移動背景時,應用程序崩潰。 .. 與此錯誤:

libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient: 
0x33240094: trap 
0x33240096: nop 

我發現它是OpenGL ES的是還在計算,使應用程序崩潰,發現這個功能:glfinish在();

但仍然不能在這裏工作的我的代碼示例:

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    [[CCDirector sharedDirector] resume]; 
} 

- (void)applicationWillResignActive:(UIApplication *)application { 
    glFinish(); 
    [[CCDirector sharedDirector] pause]; 
} 

我認爲這個問題是就在這裏 有沒有人誰擁有我的問題的想法? 感謝

編輯:

問題與解決:

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
[[CCDirector sharedDirector] stopAnimation]; 
} 
- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
[[CCDirector sharedDirector] startAnimation]; 
} 

也許這可以幫助別人X)

+0

如果你並不需要保存在退出任何設置,這將工作太:http://stackoverflow.com/questions/12878604/how-do-i-shut-down-opengl-tasks-in-applicationwillresignactive – Jeanne

回答

12

在iOS系統5.1是強制執行,你不能對OpenGL的一個電話後,你已被要求辭職。

- (void)applicationWillResignActive:(UIApplication *)application 

是停止一切,無論是CADisplayLink或[CCDirector sharedDirector] stopAnimation]

+0

是的,謝謝,我編輯時,我發現我忘了停止動畫x ) –

+0

@sup引用的文檔說:OpenG(OpenDocument L調用可以(並且在某些情況下應該)來自applicationDidEnterBackground - 它在applicationWillResignActive之後執行。請鏈接到不同意sup的文檔的文檔,否則請更新。 – janoside

+0

請注意,如果您從後臺調用OpenGL ES asyn,它仍會不時崩潰,因爲即使在您告知顯示鏈接或計時器停止後,該塊仍會繼續調用opengl。 http://stackoverflow.com/questions/19215554/how-to-stop-opengl-drawing-when-calling-opengl-from-background – openfrog

1

從技術上講,你可以做的OpenGL從調用的最後一個方法的地方,這是一個:

- (void)applicationDidEnterBackground:(UIApplication *)application 

儘管在applicationWillResignActive之後暫停繪製通常是一個好主意,但這只是一個建議,一些應用程序的要求超出了這個範圍。實際上強制執行的是,一旦您的應用移動到後臺,您就不能進行任何OpenGL調用。

docs

Once your application exits its applicationDidEnterBackground: method, it must not make any new OpenGL ES calls. If your application makes an OpenGL ES call, it is terminated by iOS.

另外,要記住,glfinish在()作爲最終的GL電話。

0

檢查,如果你有在屏幕上的FPS節點,它可能被渲染..

*編輯 - 併爲您音頻播放