Пример текстуры DDS

Для несжатой текстуры используйте флаги DDSD_PITCH и DDPF_RGB; для сжатой текстуры используйте флаги DDSD_LINEARSIZE и DDPF_FOURCC. Для текстуры mipmapped используйте DDSD_MIPMAPCOUNT, DDSCAPS_MIPMAP и флаги DDSCAPS_COMPLEX, а также элемент счетчика MIP-карты. Если создаются MIP-карты, обычно записываются все уровни вплоть до 1-1.

Для сжатой текстуры размер каждого изображения на уровне MIP обычно составляет один четвертый размер предыдущего изображения с минимумом 8 (DXT1) или 16 (DXT2-5) байт (для квадратных текстур). Используйте следующую формулу, чтобы вычислить размер каждого уровня для некверной текстуры:

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

В этой таблице перечислены объем пространства, занимаемого каждым слоем для текстуры 256 на 256 R8G8B8 без сжатия.

Компоненты DDS # Байт
заголовок 128
256-к-256 главное изображение 196608
Изображение mipmap с 128 по 128 49152
Изображение mip с 64 по 64 12288
Изображение mip с 32 по 32 3072
Изображение mipmap с 16 по 16 768
Изображение mipmap с 8 на 8 192
Изображение mipmap с 4 по 4 48
Изображение mipmap с 2 по 2 12
Изображение mipmap с 1 по 1 3

 

В этой таблице перечислены объем пространства, занимаемого каждым слоем для одной текстуры с помощью сжатия (DXT1).

Компоненты DDS # Байт
заголовок 128
Основное изображение 256 на 64 8192
Изображение mipmap 128 by-32 2048
Изображение mipmap 64 by-16 512
32-по-8 mipmap image 128
Изображение mip с 16 по 4 32
Изображение mipmap с 8 на 2 16
Изображение mipmap с 4 по 1 8
Изображение mipmap с 2 по 1 8
Изображение mipmap с 1 по 1 8

 

В этой таблице перечислены объем пространства, занимаемого каждым слоем для одной текстуры с использованием формата сжатия DXGI (в данном случае BC3_UNORM), поэтому для этого требуется расширенный заголовок:

Компоненты DDS # Байт
заголовок (FourCC, для параметра "DX10") 128
расширенный заголовок (для формата DXGI задано значение DXGI_FORMAT_BC3_UNORM) 20
Основное изображение 256 на 64 16384
Изображение mipmap 128 by-32 4096
Изображение mipmap 64 by-16 1024
32-по-8 mipmap image 256
Изображение mip с 16 по 4 64
Изображение mipmap с 8 на 2 32
Изображение mipmap с 4 по 1 16
Изображение mipmap с 2 по 1 16
Изображение mipmap с 1 по 1 16

 

Руководство по программированию для DDS