我參與過一款遊戲,並且已經測試過它與前一版本的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,所以我很難理解發生了什麼......
在比賽中我有一些動畫正在進行明顯...
附加信息:
- 這沒有發生內存警告後(我沒有記憶警告)。
確保你沒有得到的東西在另一個線程/隊列導致OpenGL調用它可能會破壞狀態在調用glDrawElements()之前,VBO(glDrawElements試圖繪製什麼)。 – mattorb
這種情況對我來說也是......但只有在模擬器中(請注意,'看不到'有些東西很難證明)。在模擬器中運行時,異常後,我可以從那裏恢復! – YvesLeBorg
我發現在我的情況下,這個問題是由CCLabelBMFont引起的,可能在iOS7之後發生了一些事情,並且在繪製它們時有機會發生崩潰。其實我已經用CCLabelTTF取代了它們,現在一切正常,但是因爲我還不知道如何解決它(這只是一種解決方法),我沒有發佈答案......我發現可能這些是所做的更改,但我還沒有嘗試過:https://github.com/jllust/cocos2d-x/commit/1f3c1145362c921bf5232c4ffbca4a5245042bae – Adarkuccio