圧縮テクスチャ形式 (Direct3D 9)
このセクションでは、圧縮テクスチャ形式の内部構造について説明します。 D3DX 関数を使用して圧縮形式との間で変換できるため、圧縮テクスチャを使用するためにこれらの詳細は必要ありません。 ただし、圧縮サーフェス データを直接操作する場合は、この情報が役に立ちます。
Direct3D では、テクスチャ マップを 4 x 4 のテクセル ブロックに分割する圧縮形式が使用されます。 テクスチャに透明度がない場合、つまりテクスチャが不透明な場合、または透明度が 1 ビット アルファで指定されている場合、8 バイトのブロックでテクスチャ マップ ブロックが表現されます。 テクスチャ マップに透明なテクセルが含まれており、アルファ チャネルが使用されている場合は、16 バイトのブロックでテクスチャ マップ ブロックが表されます。
単一のテクスチャはすべて、16 テクセルのグループごとにデータを 64 ビットまたは 128 ビットで格納するように指定する必要があります。 テクスチャに 64 ビット ブロック (つまり DXT1 の形式) が使用されている場合は、ブロック単位で不透明なアルファ形式と 1 ビットアルファ形式を同じテクスチャ内に混在させる可能性があります。 つまり、color_0 と color_1 の符号なし整数の絶対値の比較が、16 テクセルのブロックごとに独立して実行されます。
128 ビット ブロックを使用する場合、アルファ チャネルはテクスチャ全体に対して明示的 (形式 DXT2 または DXT3) または補間モード (DXT4 または DXT5 の形式) で指定する必要があります。 カラーの場合と同様に、補間モードを選択すると、8 つの補間アルファまたは 6 つの補間アルファのモードをブロック単位で使用することができます。 ここでも、alpha_0 と alpha_1 の絶対値の比較がブロックごとに独立して実行されます。
DXTn 形式のピッチは、DirectX 7.0 で返されたものとは異なります。 ピッチがバイト単位で測定されるようになりました (ブロックではありません)。 たとえば、幅が 16 の場合は、4 つのブロック (DXT1 の場合は 4*8、DXT2-5 の場合は 4*16) のピッチになります。
関連トピック