Home News

Введение в SDL

29.08.2018

Simple DirectMedia Layer (SDL) – это кроссплатформенная мультимедийная библиотека, реализующая единый программный интерфейс к графической подсистеме, звуковым устройствам и средствам ввода для широкого спектра платформ.

SDL предоставляет простой доступ к видео и аудио оборудованию, а также к устройствам ввода. Эта библиотека реализует уровень абстракции от аппаратного обеспечения, что обеспечивает ее кроссплатформенность. SDL реализована для многих операционных систем, например, таких как Linux, MacOSX, Windows, FreeBSD, Solaris, QNX, также ее средства доступны и для менее распространенных систем. Функции SDL написаны на языке C, но ее программные интерфейсы (API) доступны и для других языков.

Состав SDL

Библиотека SDL состоит из таких компонентов, как SDL_video, реализующий функции обработки видео (сжатие, вывод на экран, и другие): SDL_audio, позволяющий работать с аудиоданными; SDL_cdrom, обеспечивающий доступ к устройству чтения и записи дисков; SDL_keyboard – набор функций, позволяющий обрабатывать сигналы с клавиатуры; SDL_joystick – модуль, позволяющий работать с различными устройствами ввода (например, джойстик); SDL_timer дает возможность организации всевозможных таймеров в программе. Кроме перечисленных модулей существуют еще и другие, менее значимые.

Дополнительных модулей для этой библиотеки существует много, и так как она открыта, то любой желающий может легко расширить ее возможности. Также существуют официальные дополнения, среди которых: SDL_image – модуль для работы с двумерной графикой; SDL_mixer – средство обработки многоканального звука; SDL_net – добавляет возможности для создания сетевых приложений; SDL_ttf, SDL_rtf – функции работы со шрифтами.

Место библиотеки SDL в системе взаимодействия приложения и операционной системы показано на рисунке:

У библиотеки SDL помимо того, что она кроссплатформенна, есть еще одно большое преимущество – ее функциями достаточно легко пользоваться благодаря исчерпывающей документации. Кроме руководств на официальном сайте, можно найти хорошее описание всех функций в самих исходных кодах программы. Так как они распространяются свободно, это позволяет программистам легко использовать функции библиотеки SDL в своих приложениях.

Применяем SDL

Чтобы использовать в своих программах библиотеку SDL требуется подключить файл SDL.h. Перед использованием каких-либо функций следует провести инициализацию SDL, после чего создать поверхность для вывода на нее графических объектов. Данные задачи выполняются с помощью функций, описанных ниже.

Функция SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO) производит инициализацию библиотеки SDL (в качестве параметра принимает список библиотек, представляющий собой флаги). Строкой SDL_Surface *screen производится объявление поверхности. Все видео объекты выводятся на специально созданную для них поверхность.

Функция SDL_SetVideoMode(640,480,32,SDL_HWSURFACE|SDL_DOUBLEBUF) отвечает за создание поверхности – в данном примере создается поверхность размером 640×480 пикселей, глубина цвета – 32 бита, к тому же включается двойная буферизация, обеспечивающая более плавный и быстрый вывод на экран. Функция возвращает указатель на SDL_Surface.

SDL широко используется при программировании различных приложений. Чаще всего с ее помощью пишутся игры, но ее возможности используются также плеерами, и другими программами. Ниже приведен список некоторых наиболее известных приложений, созданных с помощью средств библиотеки SDL, либо использующих некоторые ее возможности:

Quake 4; The Battle for Wesnoth; OpenTTD; Freeciv; SuperTux; XMoto; Mplayer; VLC; DOSBox; и другие.

SDL и OpenGL

При разработке игр SDL часто используется в связке с библиотекой OpenGL, потому что SDL обеспечивает эффективную работу с аппаратным обеспечением, а OpenGL обладает широким набором функций по обработке и построению графических объектов. В результате получается мощный инструмент программирования интерактивной графики. Так как обе библиотеки открыты и кроссплатформенны, приложения, созданные на их основе, легко переносимы на различные операционные системы, что расширяет аудиторию пользователей этих приложений.

Библиотека SDL обладает широким набором функций, ее API доступны для многих языков программирования, она кроссплатформенна и открыта. Эти свойства делают SDL мощным средством создания приложений.

Новости

rss