2012-01-02 6 views
0

私はcocos2dを使用しており、1024x1024のスプライトシートを持っています。Cocos2dテクスチャメモリの使用

テクスチャをRGBA4444形式で読み込み、 'gfxAllocateTextureLevel'としてマークされた2MBを消費します。

スプライトシートからCCSpritesを作成すると、すぐにglsmLoadTextureLevelBufferとマークされた余分な4MBのメモリが消費されます。

合計で6MBなので、私のアプリに比べてかなり多いです。これは期待されていますか?すべてのスプライトシートやCCSpriteBatchNodeのバッファを作成する必要がありますか?ありがとう。

+0

どのようにCCSpritesを作成していますか?あなたはinitWithSpriteSheetを使っていますか? – rsaxvc

+0

[CCSprite spriteWithSpriteFrameName @ "spr.png"]でスプライトを作成します。スプライトシート自体を次のコードで読み込みます。次に、バッチノードを作成する前にそれらをキャッシュに追加します。[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@ "x.plist"]; – FBryant87

答えて

1

OpelGLES1.1 Spec状態:

「GL店独自の選んだの内部コンポーネントの解像度を有する得られたテクスチャ」

=> GPU /ドライバのサイズがアップし、あなたのピクセルを変換することができる必要に応じて(GPUは特定のピクセルフォーマットでのみネイティブに動作するため、それ以外のものは1つになります)、2MBのRGBA4444と4MBのRGBA8888が同じスプライトシートにあると思います。

+0

ありがとうございます。両方のピクセル形式で読み込むにはどうしたらいいですか? – FBryant87

+0

gfxAllocateTextureLevelはRGBA4444です。ただし、GPUで使用するには、変換RGBA8888(GPUネイティブ形式)を使用するGPU使用を準備する必要があります。 – rsaxvc

+0

しかし、これまでRGBA4444形式を使用している点は何ですか? – FBryant87

0

同じ問題があります。 テクスチャをRGBA8888フォーマットでロードし、 'gfxAllocateTextureLevel'としてマークされた4MBを消費します。

スプライトシートからCCSpritesを作成すると、すぐにglsmLoadTextureLevelBufferとマークされた余分な4MBのメモリが消費されます。

関連する問題