2013-04-21 60 views
1

我刚刚完成了一个cocos2d iPad应用程序的快速初稿原型。我没有修改CCTextureAtlas.m文件。cocos2d iPad崩溃时设置[_director displayStats:NO]

该应用程序运行正常,当我在AppDelegate离开[director_ setDisplayStats:YES],但如果我删除该行或替换[director_setDisplayStats:NO],它CCTextureAtlas.m崩溃。

-(void) drawNumberOfQuads: (NSUInteger) n fromIndex: (NSUInteger) start上线522,其内容为:

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

对于上下文对那些可能在看代码谁,点击开始后一点点,BoardLayer是主节点协调大部分工作和屏幕上显示的内容。

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

这是出现在Xcode调用堆栈:

enter image description here

,我怎么能解决这个问题的任何想法?

回答

1

嗯,在将清理设置为NO(如果您不小心的话会泄漏大量时间)之前我会小心谨慎。我能不FPS运行你的应用程序时(在ccConfig.h)我改变

#define CC_ENABLE_GL_STATE_CACHE 1 

#define CC_ENABLE_GL_STATE_CACHE 0 

根据您上面的回答,似乎在GL级在这里存在一个讨厌的耦合。我不认为这种优化(状态缓存)会非常明显地影响(如果有的话)您应用类型的感知性能。

ps:不错的图形,可能会成为许多7-77岁的孩子最喜欢的。

+1

嘿,谢谢!你玩的时间越长,问题就越难。 :)当我完成后,我可能会始终有一个免费的github版本,因为我试图让GameAid启动并运行。我会看看你的建议。我很感激帮助。 – Clay 2013-04-22 01:25:57

2

BoardLayer.m中,我使用的是[self removeAllChildrenWithCleanup:YES],这似乎是导致问题的原因。当我将其更改为简单[self removeAllChildren]时,一切正常,当[director_ setShowStats:NO]到位时按预期工作。

我不确定这次冲突的性质是什么 - 它似乎处于低OpenGL级别 - 但它在我的代码中已修复。