SDL изначально поддерживает только файлы .bmp, но при использовании библиотеки SDL_image, вы сможете загружать BMP, PNM, XPM, LBM, PCX, GIF, JPEG, TGA и PNG. Библиотеки расширений позволяют вам использовать функции, которые SDL не поддерживает изначально. Установка расширений SDL совсем не сложна. Я бы даже сказал, что это проще чем базовая настройка SDL. Это часть руководства научит вас тому, как установить и настроить библиотек SDL_image. Как только вы узнаете как установить это расширение, вы сможете установить и настроить любое другое.

В оригинале приводится большее количество вариантов установки и настройки, например установка под windows. Я же переведу только ту часть, которой пользовался сам. Если вам интересен перевод руководства по установке расширений под другие среды или платформы, пожалуйста, пишите в комментариях перевод для какой платформы и среды вам интересен.

  1. Пользователи Ubuntu могут воспользоваться пакетным менеджером. Открыв его ищите пакет libsdl-image1.2-dev, который является пакетом для разработки под SDL. Как только вы нашли его, нажимайте установить. Если вы устанавливаете SDL_ttf, ищите libsdl-ttf2.0-dev. Если SDL_mixed, ищите libsdl-mixer1.2-dev. И т.д. и т.д.
  2. Для дистрибутивов основанных на RPM, вам нужны пакеты SDL_image для разбаботчиков. Пакет SDL_image можно найти на этой странице. Прокрутите окно до секции "Binary" и скачайте нужный пакет:Теперь запустите RPM и дайте ей сделать свое дело.
  3. Если в первой части руководства вы использовали 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

Если документация не установилась при установке пакетов, вы можете найти ее на этой странице.