【发布时间】:2013-10-07 23:29:11
【问题描述】:
我开发了一款游戏,并且在之前的 iOS 版本中对其进行了测试,玩了数百次,在我安装了 iOS7 并更新了 xcode 之后,我什至没有看到一次崩溃刚刚尝试了我的应用程序......现在有时它会崩溃。崩溃不是在特定的时刻或动作中发生的,它们只是完全随机的,有时它会立即崩溃,有时在 2-3 场比赛之后,我试图做同样的事情来检查它是否是特别的,但似乎不是,或者至少不是以这种方式引人注目的东西。我在游戏场景中使用精灵和批处理节点。
正好在 CCTextureAtlas.m 文件中的这行代码(大约 522 行):
glDrawElements(GL_TRIANGLES, (GLsizei) n*6, GL_UNSIGNED_SHORT, (GLvoid*) (start*6*sizeof(_indices[0])) );
由于我没有对代码进行任何更改,我非常怀疑这可能是我所做的事情,可能与影响 cocos2d 的 iOS7 中的更改有关?我什至不是 opengl 专家,所以我很难理解发生了什么......
显然在游戏中我正在进行一些动画...
附加信息:
- 在内存警告后不会发生这种情况(我根本没有内存警告)。
【问题讨论】:
-
确保在调用 glDrawElements() 之前,没有任何东西导致另一个线程/队列上的 opengl 调用可能破坏 VBO 的状态(glDrawElements 试图绘制的内容)。
-
这也发生在我身上......但仅限于模拟器中(请注意,“没有看到”某些东西很难证明)。在模拟器中运行时,出现异常后,我可以从那里恢复!!!
-
我发现在我的情况下,问题是由 CCLabelBMFont 引起的,可能在 iOS7 之后发生了一些事情,并且在绘制它们时有可能发生崩溃。实际上我已经用 CCLabelTTF 替换了它们,现在一切都很好,但是因为我还不知道如何修复它(这只是一种解决方法)我没有发布答案......我发现可能是那些要进行的更改,但我还没有尝试过:github.com/jllust/cocos2d-x/commit/…
-
@Loudequal 解决了我的类似问题。好收获!
标签: opengl-es cocos2d-iphone ios7