Exemplo de textura DDS

Para uma textura descompactada, use os sinalizadores DDSD_PITCH e DDPF_RGB; para uma textura compactada, use os sinalizadores DDSD_LINEARSIZE e DDPF_FOURCC. Para uma textura mipmapped, use os sinalizadores DDSD_MIPMAPCOUNT, DDSCAPS_MIPMAP e DDSCAPS_COMPLEX, bem como o membro de contagem de mipmap. Se mipmaps forem gerados, todos os níveis até 1 por 1 geralmente serão gravados.

Para uma textura compactada, o tamanho de cada imagem de nível de mipmap normalmente é um quarto do tamanho do anterior, com um mínimo de 8 (DXT1) ou 16 bytes (DXT2-5) (para texturas quadradas). Use a seguinte fórmula para calcular o tamanho de cada nível para uma textura não quadrada:

max(1, ( (width + 3) / 4 ) ) x max(1, ( (height + 3) / 4 ) ) x 8(DXT1) or 16(DXT2-5)

Esta tabela lista a quantidade de espaço ocupado por cada camada para uma textura R8G8B8 de 256 por 256, sem usar compactação.

Componentes DDS Nº de bytes
header 128
Imagem de main de 256 por 256 por 256 196608
Imagem de mipmap 128 por 128 49152
Imagem de mipmap 64 por 64 12288
Imagem de mipmap de 32 por 32 mipmap 3072
Imagem de mipmap de 16 por 16 mipmap 768
Imagem de mipmap 8 por 8 192
Imagem de mipmap de 4 por 4 mipmap 48
Imagem de mipmap 2 por 2 12
Imagem de mipmap 1 por 1 3

 

Esta tabela lista a quantidade de espaço ocupado por cada camada para a mesma textura usando compactação (DXT1).

Componentes DDS Nº de bytes
header 128
Imagem de main 256 por 64 8192
Imagem de mipmap de 128 por 32 mipmap 2.048
Imagem de mipmap 64 por 16 512
Imagem de mipmap 32 por 8 128
Imagem de mipmap 16 por 4 32
Imagem de mipmap 8 por 2 16
Imagem de mipmap 4 por 1 8
Imagem de mipmap 2 por 1 8
Imagem de mipmap 1 por 1 8

 

Esta tabela lista a quantidade de espaço ocupado por cada camada para a mesma textura usando um formato de compactação DXGI (neste caso, BC3_UNORM) que, portanto, requer o cabeçalho estendido:

Componentes DDS Nº de bytes
cabeçalho (FourCC definido como "DX10") 128
cabeçalho estendido (formato DXGI definido como DXGI_FORMAT_BC3_UNORM) 20
Imagem de main 256 por 64 16384
Imagem de mipmap de 128 por 32 mipmap 4096
Imagem de mipmap 64 por 16 1024
Imagem de mipmap 32 por 8 256
Imagem de mipmap 16 por 4 64
Imagem de mipmap 8 por 2 32
Imagem de mipmap 4 por 1 16
Imagem de mipmap 2 por 1 16
Imagem de mipmap 1 por 1 16

 

Guia de programação para DDS