私は、デバイスのRAM容量に基づいて調整したいテクスチャー重いOpenGLゲームを持っています。最高の解像度のテクスチャ私はiPhone 4またはiPad2でうまく動作しますが、以前のデバイスはテクスチャを読み込む途中でクラッシュします。私はこれらのテクスチャの低解像度版を持っていますが、それらをいつ使うべきかを知る必要があります。iOSのRAM使用率に対応
私の現在の戦術は、特定の古いデバイス(3GSは低解像度の画面があり、iPadはカメラがありません)を検出し、IPad2以上およびiPhone 4以上の高解像度テクスチャのみを読み込みます。 iPod touchのために何かする必要があります。しかし、モデル検出はAPIやハードウェアの将来の変更に対して脆弱であるため、ハードコーディングのデバイスモデルよりもむしろ機能検出を使用する方がよいでしょう。
私が検討している別の可能性は、高解像度のテクスチャを最初に読み込んだ後に、低メモリ警告が表示されたときにそれらをドロップして置き換えることです。しかし、私は応答のチャンスを得るだろうか分からない。私は、デバッグコンソールに通知が表示される前にアプリが死ぬことが多いことに気付きました。
私が実行しているデバイスに、高解像度バージョンのテクスチャを読み込むにはRAMが不足しているかどうかを検出するにはどうすればよいですか?
私は、OpenGLテクスチャメモリに特有の他の適応技術をいくつか使用していますか?
注:
私が上で検索し、オフSO可能なRAMの検出に関連した答えを、しかし、それらはすべて基本的にメモリ使用量をプロファイリングし、無駄をなくす(テンポラリの寿命を最小化し、すべてのことに助言しましたguff)。できるだけ多くのことをやったことがあります。古いデバイスに高解像度のテクスチャを詰め込む方法はありません。
PVRTCはオプションではありません。テクスチャには、フラグメントシェーダが使用するデータが含まれており、ロスレスフォーマットで保存する必要があります。
このスレッド[iOSの空きメモリ](http://stackoverflow.com/questions/5012886)で詳しく説明しているように、合計RAMとフリーRAMの統計情報を取得できることに注意してください。また、iPhone 4でコードをテストしたところ、うまくいきました! –