Поделиться через


Пример сопоставления куба DDS

Для сопоставлений с кубическими средами в файл записывается один или несколько граней куба в несжатом или сжатом формате, и все лица должны иметь одинаковый размер. Для каждого лица могут быть определены MIP-карты, хотя все лица должны иметь одинаковое количество уровней MIP-карты. Если файл содержит карту куба, следует задать DDSCAPS_COMPLEX, DDSCAPS2_CUBEMAP и один или несколько DSCAPS2_CUBEMAP_POSITIVEX,Y/Z и/или DDSCAPS2_CUBEMAP_NEGATIVEX/Y/Z. Лица записываются в порядке: положительные x, отрицательные x, положительные y, отрицательные y, положительные z, отрицательные z, при этом отсутствующие лица опущены. Каждое лицо записывается с помощью main изображения, за которым следуют все уровни MIP-карты.

Например, карта куба 256 на 256 с положительными x, отрицательными y и положительными z гранями, форматом пикселей DXT1 и всеми уровнями MIP-карты будет содержать следующее:

Компоненты DDS # Байт
заголовок 128
Изображение 256 на 256 положительных x main 32768
Изображение MIP 128 на 128 положительных x 8192
Изображение MIP 64 на 64 положительных x 2048
Изображение MIP 32 на 32 положительных x 512
Изображение MIP 16 на 16 положительных x 128
Изображение mip-карты 8 на 8 положительных x 32
Изображение mip-карты 4 на 4 положительных x 8
Изображение MIP 2 на 2 положительных x 8
Изображение mip-карты 1 на 1 положительное x 8
повторите предыдущие 9 слоев для изображения MIP-карты Y 43704
повторить предыдущие 9 слоев для изображения z mipmap 43704

 

Начиная с DirectX 8, карта куба хранится со всеми определенными лицами.

DXGI Cube Maps

Карты кубических сред в Direct3D 10.x и Direct3D 11 эквивалентны массиву двухd-текстур с 6 изображениями и могут храниться в файлах DDS. При использовании Direct3D 10.1 и Direct3D 11 оборудование также может поддерживать массивы кубовых карт, которые сами являются массивами двухD-текстур с кратными 6 изображениями (6, 12, 18, 24 и т. д.).

Например, ниже приведена кубовая карта размером 256 на 256 с уровнями MIP-карты, хранящихся в формате BC6H в виде массива двухD-текстур:

Компоненты DDS # Байт
заголовок (FourCC из "DX10") 128
расширенный заголовок (формат DXGI имеет значение 95 [DXGI_FORMAT_BC6H_UF16], значение измерения 3 [D3Dxx_RESOURCE_DIMENSION_TEXTURE2D], размер массива 6, флаги 0x4 [D3Dxx_RESOURCE_MISC_TEXTURECUBE]) 20
256 на 256 массива запись 0 (положительное x) main изображении 65536
128 на 128 запись массива 0 (положительное x) изображение MIP-карты 16384
64 на 64 массива запись 0 (положительное x) изображение MIP-карты 4096
32 на 32 массива запись 0 (положительное x) изображение MIP-карты 1024
16 на 16 массива запись 0 (положительное x) изображение MIP-карты 256
8 на 8 запись массива 0 (положительное x) изображение MIP-карты 64
4 на 4 массива запись 0 (положительное x) изображение MIP-карты 16
Изображение MIP-карты с 0 записью массива 2 на 2 (положительное x) 16
1-на-1 запись массива 0 (положительное x) изображение MIP-карты 16
повторите предыдущие 9 слоев для записи массива 1 (отрицательное изображение x) MIP-карты 87408
повторите предыдущие 9 слоев для записи массива 2 (положительное y) изображения MIP-карты 87408
Повторите предыдущие 9 слоев для записи 3 (отрицательное значение y) mIP-карты массива 87408
Повторите предыдущие 9 слоев для MIP-изображения записи массива 4 (положительный z) 87408
Повторите предыдущие 9 слоев для записи массива 5 (отрицательное Z) изображение MIP-карты 87408

 

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