Sdl что это
Перейти к содержимому

Sdl что это

  • автор:

Библиотека SDL — обзор

В данной статье постараюсь дать краткий обзор весьма полезной open-source библиотеки SDL (Simple DirectMedia Library) для написания кроссплатформенных мультимедийных приложений. На хабре о ней почти не упоминалось, поэтому хочу восполнить этот «пробел».

Intro

SDL позиционируется как инструмент, дающий независимый от платформы низкоуровневый API для доступа к таким возможностям аппаратуры, как 2D и 3D рендеринг, воспроизведение звука и обработка устройств ввода (мышь, клавиатура, джойстик). Либа может быть полезна главным образом для тех, кто занимается разработкой cross-platform игр, однако с тем же успехом её можно использовать, например, в программах наподобие видео- и аудио-проигрывателей, эмуляторов, и т.д. Помимо вышеперечисленных возможностей, в SDL есть средства для работы с многопоточностью, файлами, таймерами и приводом CD/DVD. Это позволяет применять либу также в тех проектах, которые не связаны с графикой и/или воспроизведением звука.

SDL портирована на многие платформы. Помимо Windows, Linux и Mac OS (X), существуют также порты на Solaris, IRIX, *BSD, и т.д. Полный список есть на главной странице проекта, там же перечислены привязки ко многим языкам программирования, в т.ч. скриптовым.
Распространяется под лицензией GNU LGPL. Текущая версия 1.2.14, согласно заявлению разработчиков, выпущена для исправления ряда багов и является последней в ветке 1.2, следующая будет 1.3.

Немного об установке и API

Для всех платформ необходимые файлы доступны для скачивания на оф. сайте, а для Linux либу можно также поискать в репах (по крайней мере под Ubuntu я нашел её в пакете libsdl-dev). Исходники доступны в архивах, либо на svn.
SDL не требует установки как таковой. Подключается обычно в виде динамической библиотеки, для распространения вместе с программой достаточно прилагать единственный файл .so (.dll).

SDL написана на С. Интерфейс состоит из функций и макросов, список которых не так велик и не сложен для изучения. На вики проекта API функции и типы данных сгруппированы как по алфавиту, так и по категориям, поэтому найти что-то нужное можно практически без труда.

Небольшой пример

Ниже приведу простой пример программы, использующей SDL:

int main()
// Инициализация подсистем SDL (видео, аудио и тайминг)
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) < 0)
return 1;
// Флаг центрирование окна на экране
SDL_putenv( «SDL_VIDEO_CENTERED=true» );
// Инициализация видео. В данном случае оконный режим, 800×600@16 с получением контекста OpenGL и двойной буферизацией
SDL_Surface *surface = SDL_SetVideoMode(800, 600, 16, SDL_DOUBLEBUF | SDL_OPENGL);
if (surface == NULL)
return 1;
// Цикл обработки сообщений и рендеринга
SDL_Event evt;
bool stop = false ;
while (!stop)
// Извлекаем события из очереди
while (SDL_PollEvent(&evt))
switch (evt.type)
case SDL_KEYDOWN:
// Завершаемся при нажатии Esc.
if (evt.key.keysym.sym == SDLK_ESCAPE)
stop = true ;
case SDL_QUIT:
// . или при закрытии окна
stop = true ;
default :;
>
>
// Здесь может быть код отрисовки
// .
// Меняем местами GL фреймбуферы
SDL_GL_SwapBuffers();
>
// Завершаем работу всех подсистем SDL и освобождаем выделенную память
SDL_Quit();
return 0;
>

* This source code was highlighted with Source Code Highlighter .

(для меня непривычно писать комментарии на русском, но т.к. наверное не у всех хорошо с английским, на всякий случай оставлю так)

Пробегусь по коду. Прежде всего инициализируем нужные нам подсистемы. В данном случае это видео, аудио и тайминг. После этого отдельно устанавливаем видео режим функцией SDL_SetVideoMode(), которая возвращает созданный видео-контекст. Она также по совместительству также создаёт окошко, в котором будет происходить рендеринг. Флагов инициализации достаточно много, полный список есть на вики.
После предварительных настроек переходим к основному рабочему циклу программы. На каждой итерации он извлекает из очереди информацию о произошедших событиях, после чего меняет местами фреймбуферы (включена двойная буферизация). Между двумя этими действиями можно творить что-нибудь более содержательное, например отрисовывать очередной кадр анимации. Цикл выполняется до тех пор, пока не будет закрыто окно или нажата клавиша Esc. Перед завершением работы вызываем функцию SDL_Quit(), которая закрывает все подсистемы SDL.
Как видно из примера, SDL API очень простой, подготовка системы к работе занимает всего пару строчек, а цикл обработки событий похож на стандартный цикл обработки сообщений Windows-программ.

Outro
  • Для разработки на OpenGL SDL является достойной альтернативой GLUT. Можно интегрировать с различными движками (у меня получалось заставить её работать вместе с OGRE).
  • SDL не предназначена для создания каких-либо элементов интерфейса, кроме обычных окон, и не может в этом отношении конкурировать с такими проектами как Qt или wxWidgets.
  • Проект имеет достаточно удобную документацию на нескольких языках, в т.ч. в оффлайн версии. Помимо вики существует подробное описание возможностей библиотеки и много уроков, составленных сообществом.
  • Библиотека заслужила немалую популярность среди игроделов (в основном под Linux), и используется в таких проектах как Nexuiz и Civilization: Call To Power. Сам я узнал о либе, копаясь в файлах Nexuiz и наткнувшись на ещё непонятную для меня на тот момент аббревиатуру SDL :).
  • Доступен список API, которые использует сама библиотека на разных платформах для вывода графики и звука.
  • Наконец, основным разработчиком библиотеки является Sam Lantinga, инженер по программному обеспечению из небезызвестной Blizzard Entertainment 🙂

Что такое SDL?

Simple DirectMedia Layer (SDL) — это кроссплатформенная мультимедийная библиотека, реализующая единый программный интерфейс к графической подсистеме, звуковым устройствам и средствам ввода для широкого спектра платформ. Официально поддерживает такие операционные системы как: Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, и QNX. Приложения написанные с использованием SDL могут также работать и в следующих операционных системах: AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, и OS/2.

Использовать sdl вы можете соследующими языками программирования: Ada, C#, D, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, С++, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk и Tcl.

SDL распространяется по лицензии GNU LGPL второй версии. Эта лицензия позволяет вам свободно использовать SDL в комерческих программах.

Это официальное объяснение, теперь более понятное :). SDL — это библиотека которую вы можете использовать для создания 2d игр (и даже 3d).

Особенности
Независимость библиотеки от операционой системы и языка программирования
Внятная, понятная документация
Простая в использовании библиотека
Отрисовка графики через свой рендер, через OpenGL (что позволяет делать трехмерную игру) а при некотором старании и чтении документации с официального сайта возможность отрисовывать графику через DirectX.
Дополнительные библиотеки позволяющие расширить функциональность основной, такие как:
sdl image — позволяющая использовать разные графические форматы к примеру *.jpg или *.png.
sdl mixer — позволяет использовать разные звуковые форматы.
sdl net — повзоляет использовать сетевые возможности.
sdl rtf — позволит работать с тектовым форматом *.rtf. Например, можно будет записать в word’е справку и потом ее выводить в игре.
sdl ttf — позволяет использовать в игре любые ttf шрифты.
плюс разнообразные gui и оболочки для кода которые ожно найти на просторах интернета.

Sdl что это

Список значений слова или словосочетания со ссылками на соответствующие статьи.
Если вы попали сюда из другой статьи Википедии, пожалуйста, вернитесь и уточните ссылку так, чтобы она указывала на статью.
  • Многозначные термины

Wikimedia Foundation . 2010 .

  • Чеченская Республика Ичкерия
  • Федеральная служба по надзору в сфере защиты прав потребителей и благополучия человека России

Полезное

Смотреть что такое «SDL» в других словарях:

  • SDL — Saltar a navegación, búsqueda El acrónimo SDL se refiere a varios conceptos: SDL, una biblioteca informática multiplataforma que provee una API para la programación gráfica. SDL, en el contexto de los lenguajes de especificación es una técnica de … Wikipedia Español
  • SDL — may refer to:Technical Languages: * Storage Definition Language, a language used to define internal schemas in some DBMS s. * Simple DirectMedia Layer, a cross platform multimedia programming library. * Specification and Description Language, an… … Wikipedia
  • SDL — steht für: Schultheater der Länder, alljährlich stattfindendes Schultheaterfestival Soziale Sicherheit in der Landwirtschaft, eine Fachzeitschrift zur agrarsozialen Sicherung Simple DirectMedia Layer, eine freie Multimedia Bibliothek Soqosoqo… … Deutsch Wikipedia
  • SdL — steht für: Soziale Sicherheit in der Landwirtschaft, eine Fachzeitschrift zur agrarsozialen Sicherung Simple DirectMedia Layer, eine freie Multimedia Bibliothek Landkreis Stendal, nach den deutschen Kfz Kennzeichen Scene Description Language,… … Deutsch Wikipedia
  • SDL — El acrónimo SDL se refiere a varios conceptos. ● En Informática, SDL se refiere a una librería multiplataforma que provee una API para la programación gráfica. ● En el contexto de los lenguajes de especificación, SDL es una técnica de descripción … Enciclopedia Universal
  • SDL — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Simple DirectMedia Layer, une bibliothèque utilisée en programmation multimédia. Specification and Description Language, Langage de description et de… … Wikipédia en Français
  • SDL International — SDL International британская компания, занимающаяся переводами, локализацией, а также разрабатывающая системы автоматизированного перевода. Штаб квартира Мейденхэд, Великобритания. Основной программный продукт система SDLX. В… … Википедия
  • SDL (lenguaje de especificación) — SDL es un lenguaje de especificación formal y visual normado por la ITU T en el estándar Z.100, así como el acrónimo de Specification and Description Language. El lenguaje SDL está diseñado para la especificación de sistemas complejos,… … Enciclopedia Universal
  • SDL Tridion — Products and Customers = SDL Tridion is mainly known for its Web Content Management System used to create international and multi lingual websites.It s customer base is broad and includes KLM, Unilever, Yamaha, VisitBritain, Ricoh, Suzuki, Scania … Wikipedia
  • SDL (Unternehmen) — Dieser Artikel wurde aufgrund inhaltlicher und/oder formaler Mängel auf der Qualitätssicherungsseite des Portals Wirtschaft eingetragen. Du kannst helfen, indem Du die dort genannten Mängel beseitigst oder Dich an der Diskussion beteiligst … Deutsch Wikipedia
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,

WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Поделиться ссылкой на выделенное

Прямая ссылка:

Нажмите правой клавишей мыши и выберите «Копировать ссылку»

Что такое SDL?

Эту аббревиатуру конечный пользователь видит достаточно редко, однако это вовсе не означает, что он не сталкивается с ней никогда. Поэтому сегодня к длинному списку аббревиатур, которые мы уже рассмотрели ранее в нашей традиционной рубрике FAQ, добавится ещё одна, с которой, надеюсь, будет интересно и полезно познакомиться.

Итак, что же такое SDL? Как всегда, вариантов того, как можно интерпретировать аббревиатуру, великое множество, но мы остановимся только на одном. В данном случае расшифровывается это сокращение как Simple DirectMedia Layer. Так называется мощная программная библиотека, которая самым что ни на есть активным образом используется для разработки кросс-платформенных (и не только) мультимедийных приложений, в том числе игр. Библиотека SDL предоставляет единый интерфейс для доступа к графическим и звуковым устройствам, а также устройствам ввода. Основным преимуществом этой библиотеки перед другими аналогичными программными продуктами можно назвать как раз её кросс-платформенность, которая, в отличие от множества других библиотек, не ограничивается переносимостью между 32-разрядными версиями Windows и Linux. Список поддерживаемых программных платформ велик, и вы можете увидеть в нем даже довольно экзотические системы: BeOS, Mac OS, Mac OS X, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX, QNX. Список систем, не поддерживаемых официально, но, тем не менее, совместимых на практике с большинством возможностей библиотеки, ещё шире: он включает в себя такие системы, как AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, OS/2.

SDL является свободной библиотекой и распространяется под лицензией GNU GPL, благодаря этому (хотя, конечно, не только этому) она заслужила большую популярность у создателей мультимедийных проигрывателей и игр под Linux и другие POSIX-системы. Изначально SDL была предназначена для разработки приложений на C (ну и, конечно же, на C++), но со временем, благодаря своему качеству и большой популярности, были сделаны «обертки» для её функций для таких языков, как Ada, C#, D, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk,Tcl.

Стоит отметить, что, несмотря на свою популярность в мире Linux, под Windows SDL распространена намного меньше и используется, в основном, из соображений совместимости в силу того, что опирается на достаточно старые интерфейсы DirectX API 7-й версии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *