我刚刚完成了cocos2d iPad应用的快速初稿原型。我尚未修改CCTextureAtlas.m文件。

当我将[director_ setDisplayStats:YES]保留在AppDelegate中时,该应用程序运行良好,但是如果我删除该行或替换为[director_setDisplayStats:NO],则该应用程序将在CCTextureAtlas.m中崩溃。

第522行的-(void) drawNumberOfQuads: (NSUInteger) n fromIndex: (NSUInteger) start内容为:
glDrawElements(GL_TRIANGLES, (GLsizei) n*6, GL_UNSIGNED_SHORT, (GLvoid*) (start*6*sizeof(_indices[0])) );
作为参考,[director_ setDisplayStats:YES]AppDelegate.m的第154行上。

应用程序原型的整个源代码位于:

https://github.com/GameAid/Toddler-Taxonomist

对于那些可能会看一下代码的人来说,点击Start之后,BoardLayer是协调大部分工作和屏幕上显示内容的主要节点。

对于我的一生,我无法弄清楚自己正在做什么,这会导致问题。起初,我怀疑我对[[CCTextureCache sharedCache] removeUnusedTextures]的使用(在“BoardLayer”中)是一个问题,但现在我认为这没有什么区别。

这是出现在Xcode中的调用堆栈:

关于如何解决此问题的任何想法?

最佳答案

好吧,在将清除设置为NO之前,我会很小心(如果您不小心,会潜伏很多时间)。当我在ccConfig.h中更改时,我能够在没有FPS的情况下运行您的应用

#define CC_ENABLE_GL_STATE_CACHE 1


#define CC_ENABLE_GL_STATE_CACHE 0

根据您上面的答案,在GL级别似乎存在令人讨厌的耦合。我认为这种优化(状态缓存)不会(如果有的话)对您所看到的应用类型的性能产生显着影响。

ps:精美的图形,可能会成为许多7-77岁孩子的最爱。

07-28 03:56
查看更多