6

我已经开发了一款游戏,并且在之前的 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的专家,所以我很难理解发生了什么......

显然在游戏中我正在进行一些动画......

附加信息:

  • 这不会在内存警告之后发生(我根本没有内存警告)。
4

1 回答 1

4

ccGLBindVAO(0);每次调用后添加glDeleteVertexArrays(1, &_VAOname);,停止崩溃。

此调用包含三个文件:

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

就像在 CCTextureAtlas 中一样:

#if CC_TEXTURE_ATLAS_USE_VAO
    glDeleteVertexArrays(1, &_VAOname);
    ccGLBindVAO(0);
#endif

我正在使用 cocos2d-iphone 经典 2.2。

代码在这里:https ://github.com/jllust/cocos2d-x/commit/1f3c1145362c921bf5232c4ffbca4a5245042bae

我提出了 cocos2d-iphone-classic 拉取请求:https ://github.com/zeraien/cocos2d-iphone-classic/commit/817a9c14a3aa1d4c162071521e45e2fcce473d77

于 2015-03-18T04:03:32.247 回答