Exemple de texture DDS

Pour une texture non compressée, utilisez les indicateurs DDSD_PITCH et DDPF_RGB ; pour une texture compressée, utilisez les indicateurs DDSD_LINEARSIZE et DDPF_FOURCC. Pour une texture mipmapped, utilisez également les indicateurs DDSD_MIPMAPCOUNT, DDSCAPS_MIPMAP et DDSCAPS_COMPLEX, ainsi que le membre mipmap count. Si des mipmaps sont générés, tous les niveaux inférieurs à 1 par 1 sont généralement écrits.

Pour une texture compressée, la taille de chaque image de niveau mipmap est généralement d’un quart de la taille de la précédente, avec un minimum de 8 octets (DXT1) ou 16 (DXT2-5) octets (pour les textures carrées). Utilisez la formule suivante pour calculer la taille de chaque niveau pour une texture non carrée :

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

Ce tableau répertorie la quantité d’espace occupé par chaque couche pour une texture R8G8B8 de 256 x 256, sans compression.

Composants DDS Nombre d’octets
en-tête 128
Image main 256 par 256 196 608
Image mipmap 128 par 128 49152
Image mipmap 64 x 64 12288
Image mipmap 32 par 32 3 072
Image mipmap 16 par 16 768
Image mipmap 8 par 8 192
Image mipmap 4 par 4 48
Image mipmap 2 par 2 12
Image mipmap 1 par 1 3

 

Ce tableau répertorie la quantité d’espace occupé par chaque couche pour la même texture à l’aide de la compression (DXT1).

Composants DDS Nombre d’octets
en-tête 128
Image main 256 x 64 8 192
Image mipmap 128 par 32 2 048
Image mipmap 64 x 16 512
Image mipmap 32 par 8 128
Image mipmap 16 x 4 32
Image mipmap 8 par 2 16
Image mipmap 4 par 1 8
Image mipmap 2 par 1 8
Image mipmap 1 par 1 8

 

Ce tableau répertorie la quantité d’espace occupé par chaque couche pour la même texture à l’aide d’un format de compression DXGI (dans ce cas BC3_UNORM) qui nécessite donc l’en-tête étendu :

Composants DDS Nombre d’octets
en-tête (FourCC défini sur « DX10 ») 128
en-tête étendu (format DXGI défini sur DXGI_FORMAT_BC3_UNORM) 20
Image main 256 x 64 16384
Image mipmap 128 par 32 4096
Image mipmap 64 x 16 1 024
Image mipmap 32 par 8 256
Image mipmap 16 x 4 64
Image mipmap 8 par 2 32
Image mipmap 4 par 1 16
Image mipmap 2 par 1 16
Image mipmap 1 par 1 16

 

Guide de programmation pour DDS