我刚刚完成了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岁孩子的最爱。