iOS 7和Cocos2d,glDrawElements上的exc_bad_access完全随机

Ada*_*cio 6 opengl-es cocos2d-iphone ios7

我已经参与了一个游戏并且我已经使用之前版本的iOS进行了测试,玩了数百次,而且在我安装了iOS7并更新了xcode之后我甚至没有看到任何一次崩溃我刚尝试了应用程序和...现在有时会崩溃.崩溃不会发生在特定时刻或行动中,它们只是完全随机,有时会立即崩溃,有时候在2-3场比赛后,我试图做同样的事情来检查它是否特别适合但似乎不是,或至少不是这种方式明显的东西.我在游戏场景中使用精灵和蝙蝠侠.

正好在CCTextureAtlas.m文件中的这行代码(大约522):

glDrawElements(GL_TRIANGLES, (GLsizei) n*6, GL_UNSIGNED_SHORT, (GLvoid*) (start*6*sizeof(_indices[0])) );
Run Code Online (Sandbox Code Playgroud)

因为我没有对代码进行任何更改,所以我非常怀疑这可能是我所做的事情,可能是因为这与iOS7中影响cocos2d的变化有关?我甚至不熟悉opengl,所以我很难理解发生了什么......

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

附加信息:

  • 在记忆警告之后不会发生这种情况(我根本没有记忆警告).

zer*_*ien 4

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

此调用包含三个文件:

 CCDrawNode:164
 CCTextureAtlas:142
 CCParticleSystemQuad:164
 CCParticleSystemQuad:229
 CCParticleSystemQuad:492
Run Code Online (Sandbox Code Playgroud)

就像 CCTextureAtlas 中这样:

#if CC_TEXTURE_ATLAS_USE_VAO
    glDeleteVertexArrays(1, &_VAOname);
    ccGLBindVAO(0);
#endif
Run Code Online (Sandbox Code Playgroud)

我正在使用 cocos2d-iphone classic 2.2。

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

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