次の方法で共有


圧縮テクスチャ リソース (Direct3D 9)

テクスチャ マップは、視覚的な詳細を追加するために 3 次元図形に描画されたデジタル化されたイメージです。 これらはラスタライズ中にこれらの図形にマップされ、プロセスはシステム バスとメモリの両方を大量に消費する可能性があります。 テクスチャによって消費されるメモリの量を減らすために、Direct3D ではテクスチャ サーフェスの圧縮がサポートされています。 一部の Direct3D デバイスでは、圧縮テクスチャ サーフェスがネイティブにサポートされています。 このようなデバイスでは、圧縮されたサーフェスを作成し、そのサーフェスにデータを読み込むと、そのサーフェスを他のテクスチャ サーフェスと同様に Direct3D で使用できます。 テクスチャが 3D オブジェクトにマップされている場合、Direct3D は展開を処理します。

ストレージ効率とテクスチャ圧縮

すべてのテクスチャ圧縮形式は 2 の累乗です。 これはテクスチャが必ずしも正方形であるという意味ではありませんが、x と y の両方が 2 の累乗であることを意味します。 たとえば、テクスチャがもともと 512 x 128 バイトの場合、次のミップマップは 256 x 64 などになり、各レベルは 2 の累乗で減少します。 テクスチャが 16 x 2 および 8 x 1 にフィルター処理される下位レベルでは、圧縮ブロックは常に 4 x 4 ブロックのテクセルであるため、無駄なビットが発生します。 ブロックの未使用部分は埋め込まれます。 最も低いレベルでは無駄なビットがありますが、全体的なゲインは依然として重要です。 最悪のケースは、理論上、2K by 1 テクスチャ (2⁰ パワー) です。 ここでは、ブロックごとに 1 行のピクセルのみがエンコードされますが、残りのブロックは使用されません。

1 つのテクスチャ内での書式の混在

1 つのテクスチャでは、データが 16 テクセルのグループごとに 64 ビットまたは 128 ビットとして格納されるように指定する必要があることに注意してください。 テクスチャに 64 ビット ブロック (つまり DXT1 の形式) が使用されている場合、同じテクスチャ内でブロック単位で不透明形式と 1 ビットアルファ形式を混在させることが可能です。 つまり、color_0とcolor_1の符号なし整数の大きさの比較は、16 テクセルのブロックごとに一意に実行されます。

128 ビット ブロックを使用したら、テクスチャ全体に対してアルファ チャネルを明示的 (DXT2 および DXT3 形式) または補間モード (DXT4 および DXT5 の形式) で指定する必要があります。 色と同様に、補間モード (DXT4 および DXT5 形式) が選択されている場合は、8 つの補間アルファまたは 6 つの補間アルファ モードをブロック単位で使用できます。 ここでも、alpha_0とalpha_1の大きさの比較は、ブロックごとに一意に行われます。

Direct3D には、3D モデルのテクスチャリングに使用されるサーフェスを圧縮するサービスが用意されています。 このセクションでは、圧縮テクスチャ サーフェスでデータを作成および操作する方法について説明します。

情報は、次のトピックに含まれています。

Direct3D テクスチャ