Форматы сжатых текстур (Direct3D 9)
Этот раздел содержит сведения о внутренней организации форматов сжатых текстур. Эти сведения не требуются для использования сжатых текстур, так как можно использовать функции D3DX для преобразования в сжатые форматы и из них. Однако эта информация окажется полезной, если потребуется выполнять операции со сжатыми поверхностными данными напрямую.
В Direct3D используется формат сжатия, который делит карты текстур на текстовые блоки 4x4. Если текстура не имеет прозрачности (то есть является непрозрачной) или прозрачность задана 1-разрядным альфа-значением, 8-байтный блок представляет блок карты текстуры. Если карта текстуры не содержит прозрачных текселей, использующих альфа-канал, его представляет 16-байтный блок.
Любая текстура должна указывать, что ее данные хранятся по 64 или 128 битов на группу из 16 текселей. Если для текстуры используются 64-разрядные блоки, то есть формат DXT1, то в одной и той же текстуре можно смешивать непрозрачные и 1-разрядные альфа-форматы. Иными словами, сравнение целочисленной величины без знака color_0 и color_1 выполняется однозначно для каждого блока из 16 текселей.
При использовании 128-разрядных блоков альфа-канал должен быть указан в явном (формат DXT2 или DXT3) или интерполированном режиме (формат DXT4 или DXT5) для всей текстуры. Как и с цветом, при использовании интерполированного режима на уровне блоков можно использовать режим восьми или шести интерполированных альфа-каналов. Опять же, сравнение величин alpha_0 и alpha_1 выполняется однозначно по блокам.
Тон для форматов DXTn отличается от того, что было возвращено в DirectX 7.0. Шаг теперь измеряется в байтах (а не блоках). Например, если ширина равна 16, то шаг будет иметь четыре блока (4*8 для DXT1, 4*16 для DXT2-5).
Связанные темы