2009-08-05 16 views
4

iPhoneのゲームでPVRのテクスチャ圧縮がうまくいきました。でも、複数のテクスチャを同時にタイリングするときに問題があります。基本的に、私は、512x512の複数のタイルに分割された非常に大きな背景を持っています。すべてのPVRは圧縮されています。そして、一緒に描かれて1つの大きな背景画像のように見えます。実際に大きなテクスチャであるかのようにテクスチャを圧縮することになっていることを知らないため、PVRが動作する方法。つまり、PVR圧縮の実行方法を決定するためにネイバーのタイル化された情報を使用します。PVRテクスチャ圧縮タイル(露出エッジコンテキスト)

私は多分これを行うにはいくつかの方法が考えられます。

1)何らかの理由で、texturetoolコマンドラインプログラムに、隣接する他の画像に対応するよう指示します。
2)コマンドラインプログラムを使用して、画像全体を表す巨大なPVRテクスチャを生成し、何らかの形でバイトを複数の画像に分割します。おそらく不可能です。
3)エッジをきれいに混ぜる、ある種のOpenGL ESトリッキーを行います。
4)それぞれのタイルに冗長な情報がある場合はトリッキーを行い、テクスチャが描画されるとその領域をクリップします(できないようにしてください)。

うまくいけば、私は1,2、または3、あるいは他のよく知られた解決策があります。

答えて

4

私はオプション4になってしまいました。これはPVRTCが適切でない状況ではないと思います。実際、ほとんど必要です。一度にメモリに合計24個の512x512テクスチャがあると(非常に大きな背景と前景を表す)、それらを非圧縮にすることは自殺です。だから、PVR圧縮を普通の方法で使っただけで、私のタイリングアルゴリズムで数行のコードを編集して、両端の15ピクセルを重ねてトリムしました。ヴォイラ、素晴らしいですね。数日を費やしてかなり迷惑だったが、これはiPhoneで非常に大きなタイル張りの背景が必要な人にとっては良い選択だと思う。

+0

誰が私に-1を与えたのですか? – Eli

1

あなたが尋ねたことではなく、私の最高のアドバイスは、PVRTCが適切でないときを知ることです。はるかに簡単な解決策は、これらのタイルにPVRTCを使用しないことです。私はPVRTCを曲げようと多くの時間を費やしてきましたが、それは単にそれに適していない状況で働くことになりました。前記

、PVRTCを使用する場合、テクスチャは常に(それ自体で)タイルを想定している

は、このように右端の画素は、(上部&底部と同じ)左端の画素に影響を与えます。したがって、選択肢1または2はおそらく機能しません。

アルファチャンネルをタイルに追加し、エッジの周りにフェードアウトさせることで、それらを重ねると互いにフェードインされる可能性があります。 PVRTCは漸進的なアルファフェードでうまく機能する傾向があることに注意してください。硬いアルファエッジは、しばしばPVRTCにアーチファクトを有する。

関連する問題