1

cocos2d iPad アプリの最初のドラフト プロトタイプを完成させました。ファイルを変更していませんCCTextureAtlas.m

を離れる[director_ setDisplayStats:YES]とアプリは正常に動作しますAppDelegateが、その行を削除するか、 を置き換える[director_setDisplayStats:NO]と、 でクラッシュしCCTextureAtlas.mます。

-(void) drawNumberOfQuads: (NSUInteger) n fromIndex: (NSUInteger) start522行目:

glDrawElements(GL_TRIANGLES, (GLsizei) n*6, GL_UNSIGNED_SHORT, (GLvoid*) (start*6*sizeof(_indices[0])) );

参考までに、[director_ setDisplayStats:YES]の 154 行目にありAppDelegate.mます。

アプリ プロトタイプのソースコード全体は次の場所にあります。

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

コードを見る人のために少し説明すると、[開始] をタップした後、BoardLayerほとんどの作業と画面に表示される内容を調整するプライマリ ノードです。

私の人生では、自分が何をしていて、これが問題になっているのかわかりません。最初は[[CCTextureCache sharedCache] removeUnusedTextures]('BoardLayer' 内で) の使用に問題があるのではないかと疑っていましたが、今では違いはないと思います。

これは、Xcode に表示されるコール スタックです。

ここに画像の説明を入力

この問題を解決する方法についてのアイデアはありますか?

4

2 に答える 2

2

ではBoardLayer.m、 を使用し[self removeAllChildrenWithCleanup:YES]ていましたが、これが問題を引き起こしているようです。simple に変更すると、 が配置[self removeAllChildren]されているとすべてが期待どおりに機能し[director_ setShowStats:NO]ます。

この競合の性質はわかりませんが、OpenGL レベルが低いように見えますが、私のコードでは修正されています。

于 2013-04-22T01:04:06.093 に答える
1

まあ、私はクリーンアップを NO に設定する前に気をつけます (気をつけないとリークが潜んでいます)。(ccConfig.hで)変更すると、FPSなしでアプリを実行できました

#define CC_ENABLE_GL_STATE_CACHE 1

#define CC_ENABLE_GL_STATE_CACHE 0

上記の回答によると、ここではGLレベルで厄介な結合が存在するようです。この最適化 (状態キャッシュ) が、あなたのタイプのアプリの知覚されるパフォーマンスに (もしあったとしても) 非常に顕著な影響を与えるとは思いません。

追伸: 素敵なグラフィックは、おそらく 7 ~ 77 歳の多くの子供たちのお気に入りになるでしょう。

于 2013-04-22T01:11:24.060 に答える