DDS Texture Example
For an uncompressed texture, use the DDSD_PITCH and DDPF_RGB flags; for a compressed texture, use the DDSD_LINEARSIZE and DDPF_FOURCC flags. For a mipmapped texture, use the DDSD_MIPMAPCOUNT, DDSCAPS_MIPMAP, and DDSCAPS_COMPLEX flags also as well as the mipmap count member. If mipmaps are generated, all levels down to 1-by-1 are usually written.
For a compressed texture, the size of each mipmap level image is typically one-fourth the size of the previous, with a minimum of 8 (DXT1) or 16 (DXT2-5) bytes (for square textures). Use the following formula to calculate the size of each level for a non-square texture:
max(1, ( (width + 3) / 4 ) ) x max(1, ( (height + 3) / 4 ) ) x 8(DXT1) or 16(DXT2-5)
This table lists the amount of space taken up by each layer for a 256-by-256 R8G8B8 texture, without using compression.
DDS Components | # Bytes |
---|---|
header | 128 |
256-by-256 main image | 196608 |
128-by-128 mipmap image | 49152 |
64-by-64 mipmap image | 12288 |
32-by-32 mipmap image | 3072 |
16-by-16 mipmap image | 768 |
8-by-8 mipmap image | 192 |
4-by-4 mipmap image | 48 |
2-by-2 mipmap image | 12 |
1-by-1 mipmap image | 3 |
This table lists the amount of space taken up by each layer for the same texture using compression (DXT1).
DDS Components | # Bytes |
---|---|
header | 128 |
256-by-64 main image | 8192 |
128-by-32 mipmap image | 2048 |
64-by-16 mipmap image | 512 |
32-by-8 mipmap image | 128 |
16-by-4 mipmap image | 32 |
8-by-2 mipmap image | 16 |
4-by-1 mipmap image | 8 |
2-by-1 mipmap image | 8 |
1-by-1 mipmap image | 8 |
This table lists the amount of space taken up by each layer for the same texture using a DXGI compression format (in this case BC3_UNORM) that therefore requires the extended header:
DDS Components | # Bytes |
---|---|
header (FourCC set to "DX10") | 128 |
extended header (DXGI format set to DXGI_FORMAT_BC3_UNORM) | 20 |
256-by-64 main image | 16384 |
128-by-32 mipmap image | 4096 |
64-by-16 mipmap image | 1024 |
32-by-8 mipmap image | 256 |
16-by-4 mipmap image | 64 |
8-by-2 mipmap image | 32 |
4-by-1 mipmap image | 16 |
2-by-1 mipmap image | 16 |
1-by-1 mipmap image | 16 |
Related topics