5

私は 1 つの大きな png テクスチャ 4096x4096 をメモリにロードする必要があります。既に大きな png テクスチャを 16 個の 1024x1024 タイルに分割してから、それらを PVR 圧縮ファイルに変換しました。

問題は、これらのタイルを描画すると、タイル間のエッジが png と同じではないことです。それで、1 つの 4096x4096 PVR テクスチャを生成し、それを 16 個の 1024x1024 PVR タイルに分割するツールがあると思いますか??

4

1 に答える 1

7

PVR (複数のテクスチャ タイプをサポートする、より一般的なテクスチャ ファイル形式) とは、PVRTC のことだと思いますか?

PVRTC は、従来の意味でのブロックベースではありません。ETC や S3TC では、テクスチャが 4x4 ピクセル ブロックに分割され、各ブロックが個別に圧縮されます。代わりに、オーバーラップする隣接するピクセルのセット間でデータを共有しようとします。また、テクスチャがおそらくタイル化されていると想定しているため、たとえば、左端のエッジ領域は実際には右端と情報を共有します (上と下についても同様です)。これは通常、エッジが完全に異なる場合を除き、それほど問題にはなりません。

このように、すでに圧縮されたテクスチャを小さな領域に細分化しようとしてもうまくいきません。なぜなら、コンプレッサーは大きな画像で共有されているものを想定しており、小さな画像と同じではないからです。

各ピースを個別に圧縮することに関しては、個別の各ピースのエッジがかなり異なる可能性があるようです。私が考えることができる唯一のことは、元のテクスチャをたとえば (2^N -4)x (2^N -4) 単位に切り刻むことですが、それらを中央に配置して 2^N * 2^N テクスチャに保存します。元のピクセルのコピーで 2 ピクセルの境界を埋めます。次に、中央の (2^N -4)x (2^N -4) 領域のみを使用するようにテクスチャ マッピングを設定します。うまくいけば、不連続性アーティファクトが減少するはずです。

于 2011-05-18T15:10:42.903 に答える