Простой слой DirectMedia

редактировать
Простой слой DirectMedia
Логотип SDL Логотип SDL
Оригинальный автор (авторы) Сэм Лантинга
Разработчик ( s) Сообщество SDL
Первоначальный выпуск1998 г.; 22 года назад (1998 г.)
Стабильный выпуск 2.0.12 / 11 марта 2020 г.; 7 месяцев назад (2020-03-11)
Репозиторий Измените это в Викиданных
Написано вC
Операционной системе Linux, Windows, macOS 10.4+, iOS 3.1.3+, tvOS, Android 2.3.3+, FreeBSD 8.4+, Haiku. Дополнительно до v2.0.0 (устаревшие версии): AmigaOS, ОС RISC
Тип API
Лицензия Лицензия zlib. До 2.0.0:. GNU LGPL
Веб-сайтwww.libsdl.org

Simple DirectMedia Layer (SDL ) - это кроссплатформенная библиотека разработки программного обеспечения разработан для обеспечения уровня абстракции оборудования для компьютерных мультимедиа аппаратных компонентов. Разработчики программного обеспечения могут использовать его для написания высокопроизводительных компьютерных игр и других мультимедийных приложений, которые могут работать во многих операционных системах, таких как Android, iOS, Linux, macOS и Windows.

SDL управляет видео, аудио, устройствами ввода, CD-ROM, потоки, общий объект загрузка, сеть и таймеры. Для трехмерной графики он может обрабатывать контекст OpenGL, Vulkan, Metal или Direct3D11 (также поддерживается более старая версия Direct3d 9).. Распространенное заблуждение состоит в том, что SDL - это игровой движок, но это неверно. Однако библиотека подходит для создания игр напрямую или косвенно может использоваться движками, построенными на ее основе.

Библиотека внутренне написана на C и, возможно, в зависимости от целевой платформы, C ++ или Objective-C, и предоставляет интерфейс прикладного программирования на языке C, с возможностью привязки к другим языкам. Это бесплатное программное обеспечение с открытым исходным кодом в соответствии с требованиями лицензии zlib начиная с версии 2.0, а с предыдущими версиями распространяется действие Стандартной общественной лицензии ограниченного применения GNU. В соответствии с лицензией zlib SDL 2.0 свободно доступен для статического связывания в проектах с закрытым исходным кодом, в отличие от SDL 1.2. SDL 2.0, выпущенный в 2013 году, сильно отличался от предыдущих версий, предлагая больше возможностей для аппаратного 3D-ускорения, но нарушая обратную совместимость.

SDL широко используется в отрасли как в крупных, так и в небольших проектах. На сайте библиотеки размещено более 700 игр, 180 приложений и 120 демонстраций.

Содержание

  • 1 История
  • 2 Архитектура программного обеспечения
    • 2.1 Подсистемы
    • 2.2 Языковые привязки
    • 2.3 Поддерживаемые серверные части
  • 3 Прием и внедрение
    • 3.1 Примеры видеоигр с использованием SDL
  • 4 См. Также
  • 5 Ссылки
  • 6 Дополнительная литература
  • 7 Внешние ссылки

История

Сэм Лантинга создал библиотеку, впервые выпустив ее в начале 1998 года, работая в Программное обеспечение Loki. Идея пришла ему в голову при переносе приложения Windows на Macintosh. Затем он использовал SDL для переноса Doom на BeOS (см. исходные порты Doom ). Для работы вместе с SDL было разработано несколько других бесплатных библиотек, таких как SMPEG и OpenAL. Он также основал в 2008 году, чтобы помочь коммерческой поддержке SDL, хотя планы компании в настоящее время приостановлены из-за нехватки времени.

Вскоре после приостановки Galaxy Gameworks Лантинга объявил, что SDL 1.3 (который позже станет SDL 2.0) будет лицензироваться на условиях лицензии zlib. Лантинга анонсировал SDL 2.0 14 июля 2012 года, одновременно объявив, что он присоединяется к Valve, первая версия которой была анонсирована в тот же день, когда он присоединился к компании. Lantinga объявила о выпуске стабильной версии SDL 2.0.0 13 августа 2013 года.

SDL 2.0 - это крупное обновление SDL 1.2 кодовой базы с другим, не обратно совместимым API. Он заменяет несколько частей API 1.2 более общей поддержкой нескольких параметров ввода и вывода. Некоторые дополнения к функциям включают поддержку нескольких окон, 2D-графику с аппаратным ускорением и улучшенную поддержку Unicode.

Добавлена ​​поддержка Mir и Wayland в SDL 2.0.2 и включен по умолчанию в SDL 2.0.4. Версия 2.0.4 также обеспечивает лучшую поддержку Android.

Программная архитектура

SDL - это оболочка для специфических для операционной системы функций, к которым игра должна получить доступ. Единственная цель SDL - предоставить общую структуру для доступа к этим функциям для нескольких операционных систем (кроссплатформенность). SDL обеспечивает поддержку 2D-пиксельных операций, звука, доступа к файлам, обработки событий, синхронизации и потоковой передачи. Он часто используется для дополнения OpenGL путем настройки графического вывода и обеспечения ввода с помощью мыши и клавиатуры, поскольку OpenGL включает только визуализацию.

Игра, использующая Simple DirectMedia Layer, не будет автоматически запускаться во всех операционных системах, необходимо внести дополнительные изменения. Они сведены к минимуму, поскольку SDL также содержит несколько API абстракции для часто используемых функций, предлагаемых операционной системой.

Синтаксис SDL основан на функциях: все операции, выполняемые в SDL, выполняются путем передачи параметров в подпрограммы (функции). Специальные структуры также используются для хранения конкретной информации, которую необходимо обрабатывать SDL. Функции SDL подразделяются на несколько различных подсистем.

Подсистемы

SDL разделен на несколько подсистем:

Основы
Инициализация и выключение, переменные конфигурации, обработка ошибок, обработка журналов
Видео
Управление отображением и окнами, функции поверхности, ускорение рендеринга и т. Д.
События ввода
Обработка событий, поддержка клавиатуры, мыши, джойстика и игрового контроллера
Force Feedback
SDL_haptic.h реализует поддержку «Force Feedback»
Audio
SDL_audio.h реализует управление аудиоустройствами, воспроизведение и запись
потоков
многопоточность : управление потоками, примитивы синхронизации потоков, атомарные операции
Таймеры
Поддержка таймера
Абстракция файлов
Пути файловой системы, Абстракция файлового ввода-вывода
Поддержка общих объектов
Загрузка общих объектов и поиск функций
Информация о платформе и ЦП
Обнаружение платформы, обнаружение функций ЦП, Порядок байтов и перестановка байтов, обработка битов
Управление питанием
Состояние управления питанием
Дополнительные
Платформенные функции

Помимо этой базовой, низкоуровневой поддержки, есть также несколько отдельных официальных библиотеки, которые предоставляют еще несколько функций. Они составляют «стандартную библиотеку», представлены на официальном сайте и включены в официальную документацию:

  • SDL_image - поддержка нескольких форматов изображений
  • SDL_mixer - сложные аудиофункции, в основном для микширования звука
  • SDL_net - поддержка сети
  • SDL_ttf - TrueType поддержка рендеринга шрифтов
  • SDL_rtf - простой Rich Text Format рендеринг

Другое, также существуют нестандартные библиотеки. Например: SDL_Collide на Sourceforge, созданный Амиром Тааки.

Языковые привязки

Библиотека SDL 2.0 имеет языковых привязок для:

Поддерживаемые бэкэнды

Уровни абстракции нескольких платформ SDL

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

  • GDI back-end для Microsoft Windows.
  • DirectX back-end; более старый SDL 1.2 использует DirectX 7 по умолчанию, тогда как 2.0 по умолчанию использует DirectX 9 и может получить доступ до DirectX 11.
  • Quartz back-end для macOS (удален в 2.0).
  • Внутренняя часть Metal для macOS / iOS / tvOS начиная с 2.0.8; более старые версии используют OpenGL по умолчанию.
  • Xlib back-end для X11 -based оконной системы в различных операционных системах.
  • OpenGL контексты в различных платформы.
  • Серверная часть EGL при использовании вместе с оконной системой на основе Wayland., Raspberry Pi и другими системами.
  • Контексты Vulkan на платформах, которые его поддерживают.
  • бэкэнд SceGu, бэкэнд Sony OpenGL, родной для PSP.

SDL 1.2, имеет поддержку RISC OS (упало в 2.0).

Для SDL 1.2 доступен неофициальный бэкэнд Sixel.

Прошивка MP3-плеера Rockbox также распространяет версию SDL 1.2, которая используется для запуска таких игр, как Quake.

Прием и внедрение

Семинар по SDL, Университет Кадиса

На протяжении многих лет SDL использовался для многих коммерческих и некоммерческих проектов видеоигр. Например, MobyGames перечислил 120 игр, использующих SDL в 2013 году, а сам веб-сайт SDL перечислил около 700 игр в 2012 году. Важными коммерческими примерами являются Angry Birds и Unreal Tournament ; из домена с открытым исходным кодом: OpenTTD, The Battle for Wesnoth или Freeciv.

Кросс-платформенные релизы популярных игр Humble Indie Bundles для Linux, Mac и Android часто основаны на SDL.

SDL также часто используется для более поздних портов на новых платформах с устаревшим кодом. Например, игра для ПК Homeworld была перенесена на портативное устройство Pandora и Jagged Alliance 2 для Android через SDL.

Кроме того, SDL используется в нескольких программах, не относящихся к видеоиграм; примерами являются эмуляторы DOSBox и VisualBoyAdvance.

Было написано несколько книг для разработки с использованием SDL (см. дополнительную литературу).

SDL используется в университетских курсах обучения мультимедиа и информатике, например, на семинаре по программированию игр с использованием libSDL в Университете Кадиса в 2010 г. или дисциплина «Дизайн игр» в UTFPR (кампус Понта-Гросса) в 2015 г.

Примеры видеоигр с использованием SDL

См. Также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Дополнительная литература

  • Alberto García Serrano: Programación de videojuegos en SDL, Ediversitas, ISBN 84-95836-08-4 (Spanish)
  • Эрнест Пазера: фокус на SDL, Muska Lipman / P remier-Trade, ISBN 1-59200-030-4
  • Рон Пентон: структуры данных для программистов игр, Muska Lipman / Premier-Trade, ISBN 1-931841-94-2 (примеры программирования игр с SDL)
  • Джон Р. Холл: Программирование игр для Linux, без крахмала, ISBN 1-886411-49-2 (Первая книга SDL, автор Loki Games, заархивированная онлайн-версия: PDF на Wayback Machine (архивировано 22 января 2003 г.), исходники LaTex на Wayback Machine (архивировано 14 февраля 2003 г.)
  • Разработка игр SDL, Шон Митчелл
  • Разработка игр с SDL 2.0 на YouTube - видео от 11 февраля 2014 года Райаном С. Гордоном

Внешние ссылки

Последняя правка сделана 2021-06-08 02:04:07
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте