2013-10-07 73 views
6

我參與過一款遊戲,並且已經測試過它與前一版本的iOS,玩過數百次,並且我看過沒有一次崩潰,已經安裝了iOS7並更新了xcode我剛剛嘗試了我的應用程序,現在有時會崩潰。碰撞不會發生在特定的時刻或行動,他們只是完全隨機的,有時會立即崩潰,有時在2-3場比賽後,我試圖做同樣的事情,以檢查它是否是特別的東西,但似乎不是,或者至少不是這樣顯而易見的。我在遊戲場景中使用精靈和batchnodes。iOS 7和Cocos2d,glDrawElements上的exc_bad_access完全隨機

在CCTextureAtlas.m文件

正是在這行代碼(約522):

glDrawElements(GL_TRIANGLES, (GLsizei) n*6, GL_UNSIGNED_SHORT, (GLvoid*) (start*6*sizeof(_indices[0]))); 

因爲我沒有對代碼做任何更改我高度懷疑,可能是我做的事,可能是這與iOS7中影響cocos2d的變化有關?我不是專家,甚至使用OpenGL,所以我很難理解發生了什麼......

在比賽中我有一些動畫正在進行

明顯...

附加信息:

  • 這沒有發生內存警告後(我沒有記憶警告)。
+1

確保你沒有得到的東西在另一個線程/隊列導致OpenGL調用它可能會破壞狀態在調用glDrawElements()之前,VBO(glDrawElements試圖繪製什麼)。 – mattorb

+0

這種情況對我來說也是......但只有在模擬器中(請注意,'看不到'有些東西很難證明)。在模擬器中運行時,異常後,我可以從那裏恢復! – YvesLeBorg

+1

我發現在我的情況下,這個問題是由CCLabelBMFont引起的,可能在iOS7之後發生了一些事情,並且在繪製它們時有機會發生崩潰。其實我已經用CCLabelTTF取代了它們,現在一切正常,但是因爲我還不知道如何解決它(這只是一種解決方法),我沒有發佈答案......我發現可能這些是所做的更改,但我還沒有嘗試過:https://github.com/jllust/cocos2d-x/commit/1f3c1145362c921bf5232c4ffbca4a5245042bae – Adarkuccio

回答

4

在每次致電glDeleteVertexArrays(1, &_VAOname);後添加ccGLBindVAO(0);,停止了崩潰。

中有三個文件與此呼籲:

CCDrawNode:164 
CCTextureAtlas:142 
CCParticleSystemQuad:164 
CCParticleSystemQuad:229 
CCParticleSystemQuad:492 

像這樣在CCTextureAtlas:

​​

我使用了cocos2d-iphone經典2.2。

的代碼是在這裏:https://github.com/jllust/cocos2d-x/commit/1f3c1145362c921bf5232c4ffbca4a5245042bae

我做了一個cocos2d的-iphone經典的拉力要求:https://github.com/zeraien/cocos2d-iphone-classic/commit/817a9c14a3aa1d4c162071521e45e2fcce473d77

+0

非常感謝你非常非常非常.....我有一箇舊項目,但無法解決它。你是我的上帝。 – zszen

+0

很高興有幫助:-) – zeraien