2009-08-06 11 views

答えて

0

大きなテクスチャ(1024x1024)に複数のテクスチャを配置することができます。これは、しかし、texcoordsのいくつかの再計算が必要です。また、テクスチャパーツを描画時に使用する実際の解像度に近づけるようにしてください。つまり、テクスチャが画面の高さの1/2(240ピクセル)を満たし、256x256のテクスチャを使用するのに十分です。

さらに、より高度な方法(テストされていない)では、すべてのファイルを連結することができます(+ length + posを登録する)。mmap(..)を使用してこのpng-dbファイルにアクセスします。次に、テクスチャーローディング関数がUIImageに基づいている場合は、NSDataを使用してテクスチャーローディング関数を供給します。このようなmmap(..)を使用すると、多くのファイルを開いたり閉じたりすることができず、データへのアクセスはOS VMマネージャの助けを借りて処理されます。

[注:ええ、iPhoneのネイティブPNGローダーがマングリング...そしてどれもネイティブリーダーが必要か、マングルされたファイルを連結かもしれないいくつかのPNGを必要とする代わりに]

0

あなたが必要になるだろうどのような順序知っていますか何千もの画像がありますか?おそらく、あなたのアプリが起動したときにそれらを数百だけロードして、あなたが行くにつれてバックグラウンドスレッドに多くをロードするかもしれません。

小さな画像をより小さなテクスチャにまとめることは、どの画像が一緒に使用されるかについてのパターンがある場合にのみ、良い考えになります。

+0

テクスチャの数はそれよりも少ないものの、それだけ大きなものになるのはなぜですか?テクスチャに多くのオーバーヘッドがありますか? – CustomAppsMan

+0

画像が四角形でなく、高さ/幅が2の累乗でない場合、それらの画像を結合するテクスチャメモリを少なくしても、各ファイルを開く際に余分な作業が必要になります。 –

1

私が通常やったことは、マネージャーを通してテクスチャの遅延読み込みを処理するオブジェクトを構築することです。起動時に私は既知のテクスチャを登録し、ロード時に単純なIOを節約するために後で必要となるファイルシステム属性を解決します。その後、必要に応じて取り込みます。

処理速度を上げるために、メカニズムも、私は "この一連のイメージをロードして私に返します"と言っています。これは単純に、繰り返されるメソッド呼び出しのオーバーヘッドを削除することです。実際、私のシングルロードソリューションはバッチロードの周りの単なるラッパーです。

私は自分の簿記(オブジェクトの作成、ファイルシステムの属性の発見など)をキャッシュしますが、必要になるまで重い作業を延期します。実行時にアプリケーションにテクスチャを読み込むと、ストレージからテクスチャメモリにテクスチャを埋め込むフォールトがトリガされます。手前にある多くのテクスチャを持つシーンを読み込んでいる場合、プリフェッチで非常に共通のテクスチャのセットをロードしますが、比較的まれに見えるテクスチャをランタイムに延期します。

実際には、これは確率のために働く傾向があります - 開始時に負荷を強制すると、一度にすべてのテクスチャに遭遇することが保証されますが、それらをまばらに読み込むと予想されるユーザレイテンシは、時間待ち時間*開始からある時間ウィンドウ内にロードされる確率。テクスチャを読み込まないように開始時間プリフェッチを最適化すると、予想されるUI待ち時間が大幅に短縮されます。

さらに、NSURLConnection:connectionWithRequest:delegate:を使用して、テクスチャをストレージからロードすることを検討してください。これは非同期であり、最大のものを非同期にロードし、小さいものを同期的にロードして、ファイルシステムフェッチ/テクスチャの解凍中にIO/CPUアイドル要因を利用するように要求できます。同時)。 iPhoneは非同期ファイルシステムアクセスをうまく処理できない可能性があるので、これをテストする必要があります。

+0

いつでも、私は、現在の時点で必要とされるテクスチャをすぐにロードするプログラムにpngファイルからのイメージをロードするだけです。言い換えれば、私は一度にすべてのファイルを読み込まない。しかし、任意の時点で、私は少なくとも1000 pngが必要です。 – CustomAppsMan

+0

NSURLConnectionまたはスレッドを使用すると、複数のpngファイルを同時に読み込むのではなく、それをシリアルで実行する必要があります。 – CustomAppsMan

関連する問題