テクスチャ用の DDS ファイルのレイアウト
テクスチャ用の DDS ファイルのレイアウト
単純な圧縮していないテクスチャのファイルには、DDSD_PITCH および DDPF_RGB ピクセル フォーマット サーフェイスが入っていなければならない。ピッチの値は DWORD に整列すること。この場合、メイン イメージは合計 (dwPitchOrLinearSize x dwHeight) バイトになる。
ファイルにミップマップも含まれている場合は、DDSD_MIPMAPCOUNT、DDSCAPS_MIPMAP、および DDSCAPS_COMPLEX フラグを設定する必要がある。また、dwMipMapCount フィールドには、ファイル内で定義されているレベルの総数を指定する (256 × 256 のイメージの場合、このフィールドは 9 になる)。ミップマップ レベルの各イメージのピッチは、dwWidth およびピクセル フォーマットから計算されて、DWORD で整列される。たとえば、R8G8B8 (ピクセルあたり 3 バイト) というピクセル フォーマットで、すべてのミップマップ レベルを持つ、256 × 256 のメイン イメージには、次のものが含まれる。
"DDS", (256, 256), (pitch=768), (pixel format=R8G8B8,bitcount=24), (mipmapcount=9), (TEXTURE, PITCH, COMPLEX, MIPMAP, RGB) | 128 バイト |
256 × 256 メイン イメージ | 196608 バイト |
128 × 128 ミップマップ イメージ | 49152 バイト |
64 × 64 ミップマップ イメージ | 12288 バイト |
32 × 32 ミップマップ イメージ | 3072 バイト |
16 × 16 ミップマップ イメージ | 768 バイト |
8 × 8 ミップマップ イメージ | 192 バイト |
4 × 4 ミップマップ イメージ | 48 バイト |
2 × 2 ミップマップ イメージ | 12 バイト |
1 × 1 ミップマップ イメージ | 4 バイト |
単純な圧縮テクスチャのファイルには、DDSD_LINEARSIZE および DDPF_FOURCC ピクセル フォーマット サーフェイスが入っていなければならない。この場合、メイン イメージは合計 (dwPitchOrLinearSize) バイトになる。ファイルがミップマップを含んでいる場合は、DDSD_MIPMAPCOUNT、DDSCAPS_COMPLEX, DDSCAPS_MIPMAP、dwMipMapCount フィールドを設定する必要がある。
圧縮した DXTn フォーマットの場合、各ミップマップ レベル イメージのサイズは前のイメージのサイズの 4 分の 1 であり、最小値は 8 (DXT1) または 16 (DXT2-5) バイト (これは正方形テクスチャにのみ該当) である。たとえば、DXT1 というピクセル フォーマットで、すべてのミップマップ レベルを持つ、256 × 256 のメイン イメージには、次のものが含まれる。
DDS, (256, 256), (linearsize=32768), 128 bytes (pixel format=DXT1), (mipmapcount=9), (TEXTURE, LINEARSIZE, COMPLEX, MIPMAP, FOURCC) | 128 バイト |
256 × 256 メイン イメージ | 32768 バイト |
128 × 128 ミップマップ イメージ | 8192 バイト |
64 × 64 ミップマップ イメージ | 2048 バイト |
32 × 32 ミップマップ イメージ | 512 バイト |
16 × 16 ミップマップ イメージ | 128 バイト |
8 × 8 ミップマップ イメージ | 32 バイト |
4 × 4 ミップマップ イメージ | 8 バイト |
2 × 2 ミップマップ イメージ | 8 バイト |
1 × 1 ミップマップ イメージ | 8 バイト |
ミップマップを生成すると、通常は 1 × 1 までのすべてのレベルが作成される。ツールによっては、部分的なミップマップ チェーンをサポートしていない場合がある。
正方形以外のテクスチャの圧縮していないサイズ DXTn を計算する場合は、各ミップマップ レベルについて次の公式を使う。
max(1,width ÷ 4)x max(1,height ÷ 4)x 8 (DXT1) or 16 (DXT2-5)
DXT1 というピクセル フォーマットで、すべてのミップマップ レベルを持つ、256 × 64 のメイン イメージには、次のものが入る。
"DDS ", (256, 64), (linearsize=8192), (pixel format=DXT1), (mipmapcount=9), (TEXTURE, LINEARSIZE, COMPLEX, MIPMAP, FOURCC) | 128 バイト |
256 × 64 メイン イメージ | 8192 バイト |
128 × 32 ミップマップ イメージ | 2048 バイト |
64 × 16 ミップマップ イメージ | 512 バイト |
32 × 8 ミップマップ イメージ | 128 バイト |
16 × 4 ミップマップ イメージ | 32 バイト |
8 × 2 ミップマップ イメージ | 16 バイト |
4 × 1 ミップマップ イメージ | 8 バイト |
2 × 1 ミップマップ イメージ | 8 バイト |
1 × 1 ミップマップ イメージ | 8 バイト |