stringtranslate.com

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

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

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

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

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

История

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

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

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

Поддержка Mir и Wayland была добавлена ​​в SDL 2.0.2 [17] и включена по умолчанию в SDL 2.0.4. [18] Версия 2.0.4 также обеспечила лучшую поддержку Android. [19]

Архитектура программного обеспечения

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

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

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

Подсистемы

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

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

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

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

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

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

Поддерживаемые серверные части

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

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

SDL 1.2 поддерживает ОС RISC (убрана из версии 2.0).

Для SDL 1.2 доступен неофициальный сервер Sixel . [48]

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

Прием и усыновление

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

На протяжении многих лет SDL использовался во многих коммерческих и некоммерческих проектах видеоигр. Например, MobyGames перечислил 120 игр, использующих SDL в 2013 году, [50] а сам веб-сайт SDL перечислил около 700 игр в 2012 году. [51] Важными коммерческими примерами являются Angry Birds , [52] Unreal Tournament и игры, разработанные с использованием Valve . Source Engine , который широко использует SDL для кроссплатформенной совместимости; из домена с открытым исходным кодом — OpenTTD , [53] The Battle for Wesnoth [54] или Freeciv . [55]

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

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

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

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

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

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

Смотрите также

Рекомендации

  1. ^ "2.30.0". 2 февраля 2024 г. Проверено 3 февраля 2024 г.
  2. ^ «О, смотрите, у нас будет официальная поддержка tvOS в SDL 2.0.5 для людей, которым нужны игры на основе SDL на Apple TV!». 15 сентября 2016 г.
  3. ^ abc «список платформ, поддерживаемых SDL». Libsdl.org. Архивировано из оригинала 1 апреля 2016 года . Проверено 9 апреля 2016 г.
  4. ^ ab «Лицензия SDL» . Проверено 3 марта 2014 г.
  5. ^ "Официальный сайт SDL" . Libsdl.org . Проверено 19 марта 2010 г.
  6. ^ ab «КатегорияVulkan — SDL Wiki». wiki.libsdl.org . Проверено 5 мая 2019 г.
  7. ^ abcdefghij «Языковые привязки SDL». libsdl.org . Простой слой DirectMedia . Проверено 13 августа 2014 г.
  8. ^ «Лицензирование библиотеки Simple DirectMedia Layer» . Проверено 30 января 2012 г.
  9. ^ «Простой слой DirectMedia». 29 июня 2010 года. Архивировано из оригинала 29 июня 2010 года . Проверено 7 августа 2021 г.
  10. ^ Лантинга, Сэм (1 сентября 1999 г.). «SDL: Делаем Linux интересным». ИБМ . Архивировано из оригинала 11 мая 2003 года . Проверено 15 декабря 2023 г.
  11. ^ «Исследование Галактики». 6 апреля 2011 года . Проверено 30 января 2012 г.
  12. ^ SDL 1.3 будет иметь лицензию zLib, список рассылки SDL, 7 апреля 2011 г.
  13. ^ «Очень скоро появится SDL 2.0 с новыми функциями» . Проверено 17 августа 2012 г.
  14. ^ Анонс SDL 2.0.0, список рассылки SDL, 13 августа 2013 г.
  15. ^ Руководство по миграции — SDL Wiki'. Wiki.libsdl.org (21 ноября 2013 г.). Проверено 8 декабря 2013 г.
  16. ^ «Дорожная карта SDL 1.3» . 14 июня 2011 года . Проверено 25 июля 2011 г.
  17. Снеддон, Джоуи-Элайджа (5 февраля 2014 г.). «Некоторые из самых популярных игр для Linux будут работать на Mir» . Проверено 19 марта 2014 г.
  18. Лантинга, Сэм (2 января 2016 г.). «Журнал изменений SDL 2.0.4» . Проверено 6 января 2016 г.
  19. ^ "SDL_SysWMinfo".
  20. ^ «Введение в SDL» . Проверено 3 марта 2014 г.
  21. ^ "APIByCategory".
  22. ^ "SDL_image 2.0" . libsdl.org . Проверено 19 июля 2014 г.
  23. ^ "SDL_mixer 2.0" . libsdl.org . Проверено 19 июля 2014 г.
  24. ^ "SDL_net 2.0" . libsdl.org . Проверено 19 июля 2014 г.
  25. ^ "SDL_ttf 2.0" . libsdl.org . Проверено 19 июля 2014 г.
  26. ^ "SDL_rtf 0.1" . libsdl.org . Проверено 19 июля 2014 г.
  27. ^ "cl-sdl2". Гитхаб . Проверено 23 ноября 2017 г.
  28. ^ "f03sdl2". Гитхаб . Проверено 28 октября 2019 г.
  29. ^ "gb.sdl2". Гамбас Вики . Проверено 2 февраля 2023 г.
  30. ↑ Аб Робисон, Арч Д. (9 ноября 2015 г.). «Go + Julia + Fourier = захватчики частот с открытым исходным кодом». программное обеспечение.intel.com . Проверено 2 августа 2019 г.
  31. ^ "SDL о взломе" .
  32. ^ "SDL2 о взломе" .
  33. Билер, Джонатан (30 июля 2020 г.). «Джонатан Билер/SimpleDirectMediaLayer.jl». Гитхаб . Проверено 8 августа 2020 г.
  34. ^ SquidSinker (2 августа 2020 г.). «Примеры игр для GameZero.jl». Гитхаб . Проверено 8 августа 2020 г.
  35. ^ Дейли, Натан (31 июля 2019 г.). «Пример игры, написанной на языке Julia с использованием SDL2». Гитхаб . Проверено 2 августа 2019 г.
  36. ^ "SDL2 для Нима" . Гитхаб . Проверено 31 мая 2022 г.
  37. ^ "PerlGameDev/SDL". Гитхаб . Проверено 20 февраля 2019 г.
  38. ^ "PHP-SDL". Гитхаб . Проверено 28 октября 2019 г.
  39. ^ "SDL2::Raw". Modules.raku.org . Проверено 15 мая 2020 г.
  40. ^ Начало кольцевого программирования — от новичка до профессионала | Мансур Аюни | Апресс.
  41. ^ «Использование RingLibSDL — документация Ring 1.16» .
  42. ^ "WhatsNew.txt" . Проверено 28 сентября 2020 г.
  43. ^ «[Commits] SDL: включить сборку рендеринга Metal по умолчанию и слабую линию…» 7 декабря 2017 г.
  44. ^ "SDL: README-platforms.txt@3e2f230a6d62" . Hg.libsdl.org . libsdl.org. Архивировано из оригинала 15 декабря 2013 года . Проверено 8 декабря 2013 г.
  45. ^ «Использование OpenGL с SDL» . Проверено 9 июля 2015 г.
  46. ^ «SDL и Вэйланд».
  47. Ларабель, Майкл (30 сентября 2013 г.). «Поддержка Raspberry Pi добавлена ​​в библиотеку SDL2».
  48. ^ "SDL 1.2 Сиксель" . Гитхаб . Проверено 9 апреля 2016 г.
  49. ^ "SDLPluginPort" . Проверено 11 августа 2019 г.
  50. ^ «Промежуточное программное обеспечение: Описание группы SDL» . МобиИгры . 27 сентября 2013 года . Проверено 18 мая 2012 г. Игры, в которых используется очень портативный Simple DirectMedia Layer.
  51. ^ «Игры». libsdl.org. 18 мая 2012 года. Архивировано из оригинала 29 июня 2010 года . Проверено 18 мая 2012 г.
  52. ^ "Отзывы SDL" . Galaxygameworks.com. Архивировано из оригинала 16 июля 2011 года . Проверено 1 февраля 2012 года .
  53. ^ «Развитие». ОпенТТД . Проверено 19 марта 2010 г.
  54. ^ "Компиляция Веснота" . Веснот. 27 февраля 2010 г. Проверено 19 марта 2010 г.
  55. ^ "SDLClient - Freeciv.org" . Freeciv.wikia.com . Проверено 19 марта 2010 г.
  56. ^ май88 (23 июня 2011 г.). «Игра недели №3 — Homeworld SDL». pandorapress.net . Проверено 8 мая 2012 г. [...] выпущен порт HomeworldSDL. Участник форума Edglex позволяет вашей Pandora испытать отличную работу, проделанную ребятами из HomeworldSDL.{{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  57. ^ JA2 Stracciatella Обратная связь » Выпуск Jagged Alliance 2 Android Stracciatella Port RC2 — пожалуйста, протестируйте. Архивировано 23 октября 2012 г. на форуме Wayback Machine на форуме Bear's Pit, 3 октября 2011 г.
  58. ^ «Функции · fifengine/fifengine Wiki · GitHub» . Гитхаб . Проверено 9 марта 2015 г.
  59. ^ "Часто задаваемые вопросы о Hedgewars" . hedgewars.org . Проверено 3 октября 2014 г. ...SDL >= 1.2.5...
  60. ^ «Детали разработки». scorched3d.co.uk . Архивировано из оригинала 6 октября 2014 года . Проверено 3 октября 2014 г. ...Простой слой DirectMedia - SDL для оконного управления кроссплатформенными играми...
  61. ^ "Об игре" . Проверено 20 сентября 2021 г.
  62. ^ «Зависимости OOlite SDL» . Гитхаб . 29 мая 2016 года . Проверено 21 сентября 2021 г.
  63. ^ "Дорожная карта - Веснот" . www.wesnoth.org . Проверено 9 марта 2015 г.
  64. ^ «Новый выпуск: 0 AD Alpha 19 Syllepsis» . 26 ноября 2015 года . Проверено 20 сентября 2021 г. Пользователи Linux, обратите внимание, что SDL2 теперь включен в Linux по умолчанию.
  65. ^ "Секретные хроники Мэрио". sourceforge.net . 28 августа 2014 года . Проверено 3 октября 2014 г. ... на основе SDL...
  66. ^ «Поддержка Frozenbyte». trine2.com . Проверено 1 сентября 2020 г.
  67. ^ «[Как] Скомпилировать 0.7 для Windows (Страница 1) — Разработка — Форум Teeworlds» .

дальнейшее чтение

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