Simple SDL assets pack library
К сожалению SDL не содержит стандартных средств для создания библиотек ресурсов Однако с версии SDL2 появились стредства новые способы ввода-вывода - SDLRWops, и SDL_image их поддерживает.
Однако, к своему удивлению я не обнаружил там функции SDL_RWFromRW. Пришлось ее написать.
Определение этой функции очень простое:
extern DECLSPEC SDL_RWops *SDLCALL
SDL_RWFromRW(SDL_RWops* rw,Sint64 off,Sint64 size);
Функция позволяет выделить часть потока и работать с ним как с отдельным файлом. Исходный SDL_RWops обязан поддерживать seek. Допускается как чтение так и запись, если конечно исходный SDL_RWops их подерживал. read/write/seek гарантированы от выхода за границы выделенной области. SDL_RwFromRW не является thread-safe и не сохраняет положение указателя в исходном файле.
SDL_pack предоставляет простой интерфейс к простейшим пакетам ресурсов. Каждый пакет состоит из двух файлов: data.cat и data.pck data.pck - просто исходные файлы слепленые вместе. data.cat - текстовый файл из строк простого формата:
examples/scripts/makeCat.sh представляет собой простейший упаковщик ресурсов
[<offset>] <size> <filename>
поле | Описание |
---|---|
offset | смещение файла в data.pck. Eсли отсутствует - отсчитывается от предыдущего файла. Может быть пропущено |
size | размер данных |
filename | имя исходного файла |
В принципе нет никаких ограничений на перекрытие файлов внутри пакета.