2

テクスチャのopengl(より具体的にはwebgl)では、実行時レンダリングでより効率的なjpegとpngのどのフォーマットが推奨されますか?jpeg は PNG よりも小さい可能性があることは理解していますが、おそらくデコードはよりコストがかかるか、またはそうでない可能性があります。

4

3 に答える 3

6

ポールの答えは、ファイル サイズとデコードに関しては正しいですが、あなたが尋ねた質問には実際には答えていません。

jpeg と png のどちらの形式が、実行時のレンダリングでより効率的に推奨されますか?

問題はレンダリング時にどちらが効率的かということなので、答えは少し変わります。JPEG と PNG はどちらも圧縮されていない RGB/A データとして GPU にアップロードされるため、両者のレンダリング特性はまったく同じです。また、2 つのアップロード速度が事実上同じであることを示すいくつかのテストも行いました。そのため、レンダリングのパフォーマンスとは関係なく、必要な特性を持つ形式を選択する必要があります。(ロッシー/ロスレス、アルファチャンネルなど)

于 2012-05-28T04:08:53.913 に答える
6

JPEG のデコードは非常に高速に行われます。パフォーマンスに大きな影響を与えるには、数千 (モバイルの場合は数百) の高解像度 JPEG を使用する必要があります。あなたのプラットフォームはウェブなので、あなたが持っているテクスチャの種類に応じて、すべてのブラウザでサポートされている最もサイズ/品質効率の高いフォーマットであるJPEGをお勧めします(webpは良いですが、十分にサポートされていない代替手段です).

テクスチャがよりグラフィカルまたは漫画のようなものである場合、つまり、シャープで細かいエッジが多く、単色の領域が多くある場合は、PNG をお勧めします。中程度の高さの JPEG 圧縮では、ハードで細かいエッジが非常に汚れる可能性があります。

PNG は可逆圧縮を行います。特に漫画のようなコンテンツ (写真に比べて色やディテールが非常に少ないことを意味します) では、適切に圧縮された JPEG と同様のサイズになりますが、視覚的な結果が向上し、場合によっては圧縮率がさらに向上します。

于 2012-05-27T22:53:45.510 に答える
1

それぞれのフォーマットにはさまざまな用途があります。

JPEG: 小さい、不可逆。RGBのみ

PNG: ロスレス、4 チャンネル (RGBA)

一般に、JPEG は非常に小さくできるため、できる限り JPEG を使用する必要があります。シンプルなカラー テクスチャは JPEG に最適です。

PNGには複数の用途があります

  1. RGB カラーの上にアルファ チャネルが必要です。

    現在これを行うことができるのは PNG のみです

  2. 無損失圧縮が必要です

    フォントやその他の非常にベクターのような、またはアートのような 8 ビット ピクセルを作成している場合は、おそらく PNG を使用することをお勧めします。

  3. カラーデータ以外が欲しい。たとえば、法線マップ、高さマップ、反射マップ、不透明度マップ、ライトマップ、または同じテクスチャ内のそれらの組み合わせなどです。

    これらのことのいくつかは JPEG でもできるかもしれませんが、JPEG は人間が見る画像用に設計されています。つまり、その圧縮は、人間の目でよく見えるものとよく見えないものに合わせて特別に設計されています。たとえば、JPEG は輝度よりも色を圧縮します。また、緑よりも赤を圧縮していると思います。そのため、JPEG は通常、非ビジュアル データの圧縮には適していません。

    したがって、これらの場合は、おそらく PNG を使用することをお勧めします。

注: ArrayBuffer を使用して WebGL テクスチャにデータを直接ロードするオプションもあります。XMLHttpRequest を使用して ArrayBuffers を直接ダウンロードできます。これは、独自の形式を作成したり、JPEG や PNG よりもニーズに合った他の形式を使用したりできることを意味します。

その一例がクランチ

于 2012-05-28T06:22:43.823 に答える