0

私は午前中ずっとこれに苦労してきました。まだデバイスでテストできないので、プロファイラーが表示するものに頼って、大きな問題がないことを大まかに確認します。私が真剣に考えていることの 1 つは、Cocos2d またはカスタム コード (openGL を直接供給する) で 2D テクスチャを作成するたびに、プロファイラーですべてのテクスチャが 2 つの割り当てとして表示されるという事実です。

たとえば、約 1MB のデータであるテクスチャ 512x512x4 を作成すると、ライブ バイトの使用量が 2MB 跳ね上がり、ライブ オブジェクトのリストに、それぞれ 1Mb のメモリの 2 つの重いブロックが表示されます。これはテクスチャとまったく同じです。

そして、その点を強調させてください-これは、デストラクタで削除されるglTexImage2D()に提供した生の画像ファイルではなく、何度もチェックしました。また、Cocos2d のサンプル プロジェクトでも見られた問題は、単純にテクスチャ用のすべてのメモリが 2 倍になっていることです。

以下の 2 つのスクリーンショット - cocos2d アプリからの 1 つは、4 つの割り当てられたオブジェクトとしてプロファイラーに表示される 2 つのテクスチャ 600 KB を示しています。 ここに画像の説明を入力

また、libpng を介して提供される openGL と画像を使用して直接割り当てられ作成されたカスタム テクスチャ - それぞれ 1Mb のライブ 2 つのオブジェクトとして表示されます。 ここに画像の説明を入力

誰かがこれについて私を啓発してくれれば幸いです。おそらく、デバイスの状況では異なって見えます。

よろしく、s。

4

1 に答える 1

1

これはcocos2dの正常な動作です。最初に画像ファイルをUIImageとしてロードし、次にそれをCCTexture2Dに変換します。つまり、ほとんどの場合、メモリ使用量は予想の2倍になります。次のフレームでは、追加のメモリを解放する必要があります。

この動作の詳細については、私のメモリ最適化ブログ投稿を参照してください。また、.pvr.cczを使用すると、このメモリオーバーヘッドが大幅に削減されるだけでなく、PNGよりもはるかに高速に読み込まれることもわかります(cocos2dでの読み込みが非常に遅いJPGは言うまでもありません)。

于 2013-01-14T20:32:24.443 に答える