Установка библиотек расширений
SDL изначально поддерживает только файлы .bmp, но при использовании библиотеки SDL_image, вы сможете загружать BMP, PNM, XPM, LBM, PCX, GIF, JPEG, TGA
и PNG
. Библиотеки расширений позволяют вам использовать функции, которые SDL не поддерживает изначально. Установка расширений SDL совсем не сложна. Я бы даже сказал, что это проще чем базовая настройка SDL. Это часть руководства научит вас тому, как установить и настроить библиотек SDL_image. Как только вы узнаете как установить это расширение, вы сможете установить и настроить любое другое.
В оригинале приводится большее количество вариантов установки и настройки, например установка под windows. Я же переведу только ту часть, которой пользовался сам. Если вам интересен перевод руководства по установке расширений под другие среды или платформы, пожалуйста, пишите в комментариях перевод для какой платформы и среды вам интересен.
- Пользователи Ubuntu могут воспользоваться пакетным менеджером. Открыв его ищите пакет
libsdl-image1.2-dev
, который является пакетом для разработки под SDL. Как только вы нашли его, нажимайте установить. Если вы устанавливаетеSDL_ttf
, ищитеlibsdl-ttf2.0-dev
. Если SDL_mixed, ищитеlibsdl-mixer1.2-dev
. И т.д. и т.д. - Для дистрибутивов основанных на RPM, вам нужны пакеты SDL_image для разбаботчиков. Пакет SDL_image можно найти на этой странице. Прокрутите окно до секции "Binary" и скачайте нужный пакет:Теперь запустите RPM и дайте ей сделать свое дело.
- Если в первой части руководства вы использовали apt-get, aptitude или yum для установки SDL, то у вас уже должны быть установлены пакеты
SDL_image, SDL_ttf и SDL_mixer
.
Теперь, когда вы установили библиотеки разработчика, самое время научится компилировать приложения с использованием библиотек. Когда вы компилируете приложение, просто добавьте -lSDL_image
после g++ -o myprogram mysource.cpp -lSDL
Если вы связываете с SDL_ttf, добавляйте -lSDL_ttf
.
Если SDL_mixer, то -lSDL_mixer
.
И т.д. и т.д. Для использования SDL_image
убедитесь что вы включили заголовочный файл.
#include
Для SDL_ttf:
#include
Для SDL_mixer:
#include
И т.д. и т.д. Теперь библиотека готова к использованию. И можно использовать функции SDL_image. Главная функция, о которой вы бы хотели узнать это IMG_Load()
.
SDL_Surface *load_image( std::string filename ) {
//Временное хранилище для загружаемого изображения
SDL_Surface* loadedImage = NULL;
//Оптимизированное изображение, которое и будет использоваться
SDL_Surface* optimizedImage = NULL;
//Загружаем изображение при помощи SDL_image
loadedImage = IMG_Load( filename.c_str() );
//Если изображение загружено
if( loadedImage != NULL ) {
//Создать оптимизированное изображение
optimizedImage = SDL_DisplayFormat( loadedImage );
//Освободить ресурсы из-под старого изображения
SDL_FreeSurface( loadedImage );
}
//Вернуть оптимизированное изображение
return optimizedImage;
}
Перед вами пересмотренная версия функции загрузки изображений из предыдущей части руководства. Как вы можете видеть, IMG_Load()
работает так же как и SDL_LoadBMP()
, но с одни большим исключением: IMG_Load()
может загружать файлы BMP, PNM, XPM, LBM, PCX, GIF, JPEG, TGA
и PNG
Начиная с этого момента, в руководствах будут использоваться изображения в формате PNG
. Изображения в этом формате используют великолепный алгоритм сжатия без потерь.
Скачать исходники. Рекомендую держать под рукой документацию по SDL_image. Попоробуйте ввести в терминале
man IMG_Load
Если документация не установилась при установке пакетов, вы можете найти ее на этой странице.