21

多くのテクスチャをレンダリングする iPhone 用の 2D アプリケーションを開発しています。それらのほとんどは、現時点ではアルファ透明度を持つ PNG ファイルから読み込まれます。テストとして、パフォーマンスの違いがあるかどうかを確認するために、PVR テストも試してみました。

PNG テクスチャは、クラッシュ ランディングの例に付属する Texture2D クラスで読み込まれます。PVR-testure は、PVRTextureLoader の例の PVRTexture クラスでロードされます。Apple の texturetool を使用して PVR テクスチャを作成します。

テストとして、背景 (512*512) をレンダリングし、その上に 36 個の 90*64 ピクセル スプライト (512*512 テクスチャから) を透明にレンダリングします。PVR テクスチャは約 58 fps でレンダリングされ、PNG は 47 fps でレンダリングされます。これは私が期待できることですか、それとも違いはもっと大きくあるべきですか? また、texturetool によって生成されたテクスチャは非常に見栄えが悪いですが、PVRTexTool の方が優れていますか?

4

2 に答える 2

44

PNG:

  • 損失のない高精度の色表現
  • ディスクからの読み取り/解凍が遅くなります。
  • グラフィックス ハードウェアへのアップロードが遅く、ドライバーによって内部ピクセルの並べ替え (スウィズリング) が実行されます。おそらく、RGBA<->BGRA<->ARGB 間の変換もありますが、Xcode は通常 PNG をハードウェアにより最適化されたカラー形式に変換します。
  • メモリ帯域幅が制限されているため、レンダリングが遅くなります (GPU のメモリから読み取るバイト数が増えます)。実際の速度低下の量は、使用シナリオによって異なります。この問題は、拡大率が 1 倍未満で、MIP マッピングがない場合に最も顕著です。
  • RAM/VRAM スペースを増やしてください。
  • 編集可能で、アップロード前にソフトウェアでフィルタリング/ブレンド/サイズ変更/変換できます。
  • ミップマップは、ドライバーによるテクスチャのアップロード中に自動的に生成できます
  • ディスク容量の使用量はコンテンツによって異なり、単純な画像の場合は非常に小さく、写真のようにリアルな画像の場合はほとんど圧縮されません。
  • 任意の画像編集ソフトウェアから直接かつ迅速にエクスポートできます。

PVR:

  • 低精度の非可逆圧縮。2 ビット/ピクセルと 4 ビット/ピクセルの 2 つの圧縮レベルが利用可能です。ブロック状で、シャープなエッジや滑らかなグラデーションが損なわれる可能性があります。画質はコンテンツによって異なります。3 つまたは 4 つのカラー チャネルがあるため、アルファ チャネルを使用できますが、非可逆圧縮は望ましくない結果をもたらす可能性があります。
  • ディスクからの読み込みが高速で、ソフトウェアによる解凍は不要です。
  • 内部ハードウェア フォーマットであるため、ほぼ瞬時のテクスチャ アップロードは、変更されずにドライバを通過します。
  • メモリ帯域幅の使用量が少ないため、レンダリングが高速です。PVR テクスチャを使用する場合、ピクセルのレンダリング速度は、ほとんどの場合、他の要因によって制限されます。
  • RAM および VRAM スペースの使用量を最小限に抑えます。
  • ミップマップは事前に生成する必要があります。
  • ソフトウェア AFAIK 内で PVR を生成または編集することはできません。または、非常に遅くなります。
  • ディスク容量の使用量は、ソース イメージのサイズに正比例します (固定圧縮率)。他の方法でさらに (わずかに) 圧縮できます。
  • サイズ制限。2 のべき乗、平方のみ。
  • 追加の変換ツールが必要です。処理は自動化できますが、ビルド時間が大幅に遅くなります。
于 2011-02-03T17:07:00.210 に答える
10

PVRTC テクスチャは圧縮されている (非可逆) ため、パフォーマンスは向上するはずです。解凍は、グラフィックス ハードウェア自体で行われます。転送されるテクスチャ データが少なくなるため、より多くの帯域幅が得られます。RAM と帯域幅の節約に対して支払う代償は、品質の低下です。

于 2009-02-13T10:37:13.650 に答える