2011-12-04 5 views
0

iOS上に手動でNPOT PVRテクスチャをロードしたい(OpenGLメモリにテクスチャを読み込むことを意味するわけではありません。イメージデータにアクセスできるカスタムデータ構造で読み込むキャンバスを拡大し、新しいPVRとして再び保存するため)。NPOT PVRテクスチャをiOS内でPOTに変換する

多くの背景テクスチャ(非網膜ディスプレイでは480×320)のOpenGL iOSアプリケーションを実装しているので、これを頼んでいます。私たちはこのテクスチャをNPOT PVRファイルとして保存しようと考えています。そのため、3GS + iPhonesでメモリを増やしています。

3G-iPhoneは、OpenGL以外のメモリにNPOT PVRテクスチャを読み込むことができません。私の意図は、すべてのNPOT PVRテクスチャをPOT PVRに変換し、アプリのキャッシュフォルダに保存する3Gデバイス用の前処理ステップを実装することです。

このようにPVRをロードして処理することはできますか?たとえば、TexturePackerがPVRを生成しました。

+0

正確には、私はPVRTCテクスチャのキャンバスのサイズを変更したくないことに気づきました。代わりに、通常のRGB444A形式をカプセル化したPVRファイル(コンテナ)のキャンバスのサイズを変更したいと考えています。とにかく、彼らが多くを助けたので、答えのおかげで! –

答えて

1

確かです。

  1. ファイル形式を解凍します。
  2. 生画像データ
  3. が新しいスケーリングされたデータを圧縮し、ステップ1について

を保存スケール、https://github.com/Volcore/quickpvrかのPowerVRのSDKを参照してください。

ステップ3では、公開されているPVRTC圧縮のドキュメントまたは実装はありません。したがって、いくつかの選択肢があります。あなたはしかし、ステップ1

から想起できるファイル形式のどんな仕様に基づいて、クラスダンプの組み合わせを使用し、アップル S texturetool(お勧めできません)をコンパイルするOTX、または(おそらく簡単に)独自のエンコーダを書きますあなたの状況を前提に、私は前処理されたステップとしてこれをすべて行い、テクスチャの2つのバージョンをあなたのアプリと共に含めます。

+0

あなたの答えをありがとう!アプリケーションには2つのバージョンが含まれないようにすることをお勧めします。なぜなら、その中に*トン*があり、IPAサイズをかなり大きくするからです。また、PowerVRのSDKを使用してiOSからステップ3のファイルを生成する方法はありませんか?他のツール(TexturePackerのような)がPVR圧縮ファイルをどのように書くことができますか? –

+0

ところで、正確さの揺れに対して、ステップ2は、「生の画像データに透明なピクセルを追加する」でしょう。 –

+0

あなたは何を知っていましたか、私は以前これに気づいたことはありませんでしたが、これはあなたの役に立つかもしれません:http://www.imgtec.com/powervr/insider/powervr-pvrtexlib.asp。私はまだそれを持っていないが、それはまさにあなたが探しているものである。 – bronxbomber92

1

自動的にリピート/ラップするためにテクスチャを必要とせず、480 x 320テクセルを512x512テクスチャのサブセットとして使用し、X> 480およびy> 320の部分に決してアクセスしない場合データを並べ替えることができます。

ソース画像を512x512(一定の色を使用)まで塗りつぶし、圧縮した後、テクスチャの関連部分を保存することをお勧めします。アプリケーションでテクスチャをロードするときは、欠落している圧縮データを再パッドするだけです。 (それは、それが最も明確な説明ではないことを認識しました: - |)。

ストレージの順序を考慮する必要があることに注意してください(これはおそらくbronxbomber92のリンクに記載されています)が、もっと簡単な方法があるかもしれません。 圧縮データは、64ビットのチャンクで配置/インターリーブされます。ソースイメージを一定の色でパディングした後、少なくともIMG PVRTextoolコンプレッサーを使用して圧縮した後は、同じ64ビットのチャンクが適切な割合(〜38%)でなければなりません。たとえば、64ビットワードがこの '同じ'定数を使用してそのデータを格納しないようにするフラグを使用できます。

+0

詳細な回答ありがとう! –

関連する問題