2012-04-30 9 views
4

Cocos2dの画像には、サイズが大きすぎるとメモリを取りすぎるかどうかにかかわらず、推奨される制限がありますか?ゲームが減速するのを避けるために、ディメンションまたはKbでいくつかのルールがありますか?あなたの答えCocos2dのメモリ管理に推奨される制限はありますか?

答えて

10

まず第一に、メモリ使用量は、パフォーマンスに関して非常に、非常に、非常にほとんどありません。テクスチャで全体のメモリを埋めることができます、ゲームは気にしません。違いが生じる場所をレンダリングするときです。そして、テクスチャでどれくらいの領域を塗りつぶしているのか、重なっているか、バッチ処理されているのか、回転しているのか、スケーリングされているのか、陰影付けされているのか、そしてアルファブレンドされているのかだけです。これがテクスチャレンダリングの主な要因です。メモリ使用量は非常に重要な役割を果たしません。

私がやったcocos2d sprite-batch performance testと一般cocos2d performance analysisに興味があるかもしれません。どちらもテストプロジェクトが付いています。 iPhoneとiPhone 3Gのデバイスは、24メガバイトのテクスチャメモリの制限があることを enter image description here

注:最大テクスチャサイズについては

は私のLearn Cocos2D本からテーブルを見てみましょう。第3世代(iPhone 3GS)以降、新しいデバイスにはこれ以上の制限はありません。また、デバイスには256 MBのメモリが搭載されていますが、アプリで使用できるメモリは大幅に少なくなります。

たとえば、iPad(第1世代)では、100 MB以上のメモリを使用しないことをお勧めします。利用可能な最大メモリは約125 MBに達し、メモリ警告は早くも80-90 MBメモリ使用量。

iOS 5.1のAppleでは、iPad 2の最大テクスチャサイズも増やしました。最も安全で最も一般的に使用できるテクスチャサイズは、網膜テクスチャでは2048x2048、標準解像度テクスチャでは1024x1024です。

iPod touchデバイスは、同じ世代のiPhoneモデルと実質的に同じだが、わかりやすいものではないため、iPod touchデバイスはありません。たとえば、iPod touchの第3世代には8,16,32GBのフラッシュメモリを搭載したデバイスが含まれていますが、実際には8GBモデルは第2世代のハードウェアです。

+0

あなたの答えをありがとう、あなたのブログは本当に素晴らしいです、私は記事をチェックします!どうもありがとうございました! – Paul

+1

こんにちは、私はあなたに1つの質問をすることができますか?私は正常/選択/無効になった画像について、各デバイスごとに聞いた...デバイスごとにすべてのイメージを作成するとどうしますか?イメージの通常/選択/無効バージョンごとに '-hd'イメージと標準イメージを作成しますか?もう一度ありがとう – Paul

+0

@Paulあなたはこれを解決しましたか?私は似たような質問(http://stackoverflow.com/questions/10232539/how-to-approach-hd-files)だけでなく、私がLearnCocos2DによってCCFileUtilsローダを強制して強制的に停止させるように提案した別の質問をしましたhdファイルとnonhdファイルの両方が必要です。 – mm24

0

について((私はバッチノードを使用している場合でも)、背景画像、または私の文字のグラフィックスのため?)

感謝..サイズ1024×1024のバッチノードは約4を取る私の知識を1としてテクスチャメモリだけのMBのスペース。アプリケーションには最大24 MBの制限があります。あなたはこの24 MBのスペースに達し、それ以降クラッシュするので、ゲームは遅くなります。遅さを避けるために、私は一度に最大4つのバッチノードを使用しました.16 MBでした。残り8 MBは変数やその他のデータのために残りました。より多くのバッチノードを使用する前に、私はメモリをきれいにし、未使用のバッチノードを削除しました。私は4秒でメモリの制限についてはわかりませんが、iPhone 4の場合、これは私が学んだことでした。 このロジックを念頭において、私はスムーズにゲームを走らせていました。

+0

なぜアプリケーションのメモリ制限が24 MBであるとお考えですか?限界はデバイスによって決定され、現代のデバイスはより多くのメモリを有する。インストゥルメントを使用すると、今構築しているアプリケーションで、実行中に約80 MBのメモリが使用されていることがわかります。 – johnbakers

+0

これは私がiPhone 4のために24 MBを言及した理由です。私は4Sについて知りません..詳細私が学んだそのテクスチャメモリ以上。楽器のメモリは150 MBに達しました。私は楽器のメモリが実際に使用されたメモリとは異なると思います。残り私は実際に楽器のメモリ割り当てを認識していません。 –

+0

これは正しい情報ではないと確信しています。 iPhone 4には24 MBの制限がありますか?私はそうは思わない。 iPhone 4でこのメモリ使用量を4倍にしても問題なくアプリを実行できます。そしてInstrumentsはメモリ使用量を正しく報告します。そうしないと、有用なツールにはなりません。 – johnbakers

1

イメージとテクスチャのサイズは、サポートしているデバイスによって異なります。古いデバイスは小さなレイヤーをサポートしていましたが、私は2048x2048サイズだと思います。このような制限は現在のデバイスにはないと私は考えています。

大きなイメージの場合は、大規模なイメージを扱うときに最大のパフォーマンス向上を実証するために、テスト済みのバッチノードを使用してください。できるだけ一般的にそれらを使用することは良い考えです。

どのくらい読み込むことができるかは、実際にはデバイスによって異なります。新しいiPadには1 GBのメモリが搭載されており、大きな画像に使用できるメモリがはるかに多いように設計されています。第一世代のiPadにはこの量のメモリが4分の1あり、私の経験では、100 MBのメモリが使用されると(インストルメントを使用して確認されたように)アプリがクラッシュすることがあります。

このトリックは、現在のアプリケーションの操作に必要なだけのメモリを使用し、新しいシーンや新しい画像/スプライト/テクスチャのセットに移動するときに解除することです。たとえば、ビューポートに最も近いタイルだけがメモリにロードされる非常に大きなタイルテクスチャを持つことができます。画面上に表示されないビューの部分をメモリから削除すると、技術的には無限のサイズのビューが永久に伸びます。

もちろん、たくさんのリソースを扱うときは、アプリケーションのデリゲートがメモリ警告に適切に応答するようにしてください。

関連する問題