2013-10-06 86 views
3

我有一個簡單的遊戲,它直接使用EAGLLayer。我必須設置runloop和所有OpenGL ES樣板。由於OpenGL背景問題,遊戲有時會崩潰。我聽說GLKit有一個強大的樣板OpenGL視圖,用於處理OpenGL初始化和暫停。如何用GLKit的OpenGL視圖替換OpenGL ES 1.1 EAGLLayer視圖?

是否有可能爲OpenGL 1.1設置此GLKit視圖,我將從哪裏開始?

+0

您是否設法在GLKit上運行OpenGLES 1.1?如果可以,請在這裏發佈解決方案? – Dorald

回答

1

這是一個相當開放的問題,所以最好先從GLKit獲取一些背景知識,然後在出現具體問題時提出更多問題。

看看使用「OpenGL遊戲」模板創建新的Xcode項目時得到的代碼 - 這會爲您設置一個GLKViewGLKViewController。還有一些關於這些類如何工作以及如何在Apple的OpenGL ES Programming Guide中使用它們的描述。

它的整體要點:GLKView做所有的幀緩衝,渲染,和視口的設置和演示了基本的OpenGL ES繪圖(包括所有額外的幀緩衝雜耍的多重採樣,如果你想要的),這樣所有你需要做的是問題繪圖命令。 GLKViewController擁有一個GLKView,並運行一個調用您的繪圖代碼的動畫計時器 - 默認情況下,它確保在應用程序處於後臺時不調用您的繪圖代碼。

如果您使用的是GLKViewController,並且僅使用GLKView(子類或委託)繪圖方法進行OpenGL ES調用,則不必擔心由於GPU在後臺使用而導致崩潰。如果看到這樣的崩潰(在堆棧跟蹤中有gpus_ReturnNotPermittedKillClient),它可以幫助強制GL在去後臺之前完成處理 - 在applicationWillResignActive:中調用glFinish()