-
Notifications
You must be signed in to change notification settings - Fork 2
mmp_ru
aspadm edited this page Jul 11, 2018
·
1 revision
Упакованная текстура с поддержкой MIP-уровней
Файл начинается с заголовка со следующей структурой:
struct Header
{
uint magic; // 4D 4D 50 00
uint width;
uint height;
uint mip_count;
uint format;
uint bit_count;
struct Channel a_format, r_format, g_format, b_format;
uint offset
};
a_format, r_format, g_format, b_format
- спецификации структуры ARGB данных пикселя:
struct Channel
{
uint mask;
uint shift;
uint count;
};
Значение format
одно из следующих:
format | описание |
---|---|
44 44 00 00 | ARGB4 |
44 58 54 31 | DXT1 |
44 58 54 33 | DXT3 |
50 4E 54 33 | PNT3 - RLE сжатый ARGB8 |
50 56 00 00 | R5G5B5 |
51 55 00 00 | A1R5G5B5 |
88 88 00 00 | ARGB8 |
После заголовка располагаются данные изображения - нулевой MIP-уровень, первый и так далее.
Если формат изображения PNT3, то структура пикселей не важна; bit_count
- размер сжатого изображения в байтах. Размер несжатого изображения - 4 * ширина * высота.
Распаковка PNT3:
Если значение uint 0 или 1000000, пропустить эти 4 байта, увеличить счётчик, иначе скопировать последние байты в соответствии со счётчиком и сбросить его.