-
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 байта, увеличить счётчик, иначе скопировать последние байты в соответствии со счётчиком и сбросить его.