Релиз мультимедийной библиотеки SDL 3

Представлен релиз библиотеки SDL 3.2.0 (Simple DirectMedia Layer), который помечен как первый официальный стабильный выпуск ветки SDL 3. Библиотека нацелена на упрощение написания игр и мультимедийных приложений, и предоставляет такие возможности, как аппаратно-ускоренный вывод 2D- и 3D-графики, обработка ввода, воспроизведение звука и вывод 3D через OpenGL, OpenGL ES, Metal, Direct3D или Vulkan. Код написан на языке Си и распространяется под лицензией Zlib. Предоставляются обвязки для использования SDL в проектах на различных языках программирования.

Основные новшества:

  • Существенно улучшена поддержка протокола Wayland, который теперь активирован по умолчанию в окружениях, предоставляющих одновременную поддержку Wayland и X11, и поддерживающих расширения протокола fifo-v1 и commit-timing-v1.
  • Задействован по умолчанию мультимедийный сервер PipeWire, который помечен как более приоритетный, чем PulseAudio.
  • Добавлена поддержка видеозахвата с web-камер (при наличии PipeWire).
  • Добавлена возможность использования графических планшетов и цифровых перьев.
  • Значительно улучшена поддержка экранов с высокой плотностью пикселей (High DPI).
  • Добавлена поддержка цветовых пространств и возможность управления несколькими цветовыми пространствами. Реализована начальная поддержка HDR.
  • Полностью переработан код для работы со звуком. Добавлена поддержка логических звуковых устройств (разные части программы могут работать со своим отдельным звуковым устройством). Добавлены средства для работы со звуковыми потоками, преобразования потоков, изменение частоты дискретизации, микширования, управления буферизацией, изменения тона и громкости. Реализована автоматическая обработка подключения или отключения звуковых устройств, а также смена звукового устройства по умолчанию.
  • В API 2D-отрисовки добавлен бэкенд для отрисовки через API Vulkan. Добавлены функции для работы с поверхностями через API Vulkan.
  • Проведена большая чистка устаревших возможностей, потерявших актуальность в современных реалиях. Например, прекращена поддержка OpenGL ES 1.0 и DirectFB, удалён код для работы на устаревших платформах, таких как QNX, Pandora, WinRT и OS/2.
  • Предоставлена возможность организации работы программы с использованием callback-вызовов и определения цикла обработки событий в функции main().
  • В API внесены изменения, нарушающие совместимость. Унифицированы правила наименования API – вызовы в разных подсистемах теперь именуются с использованием одной общей схемы.
  • Добавлены новые API:
    • GPU API – кросс-платформенный доступ к GPU и возможностям 3D-рендеринга.
    • Dialog API – использование диалогов для выбора/открытия/сохранения файлов и каталогов.
    • Filesystem API – управление каталогами и поиск файлов.
    • Storage API – абстрактный программный интерфейс для доступа к разным системам хранения данных.
    • Camera API – доступ к web-камерам.
    • Pen API – работа с графическими планшетами и цифровыми перьями, такими как Wacom и Apple Pencil.
    • Properties API – хранение параметров в формате ключ/значение.
    • Process API – запуск дочерних процессов и организация канала связи с ними.
    • App metadata API – формирование заставки со сведениями о приложении (диалог About).
  • Заменён API для работы с прозрачными окнами.
  • Расширен API для работы с буфером обмена – помимо текста через буфер обмена теперь можно передавать данные и других типов. Добавлена возможность помещения в буфер обмена данных в нескольких форматах.
  • Расширены возможности для обработки ввода с клавиатуры. Добавлена возможность настройки виртуальных клавиатур для iOS и Android.
  • Значительно улучшена и переработана документация по API. Добавлена подборка примеров программ, которые можно запускать прямо в браузере.

Одновременно опубликован релиз слоя совместимости sdl2-compat, который предоставляет API, совместимый с двоичным и исходным кодом SDL 2.x, но работающий поверх SDL 3. Пакет sdl2-compat может выступать в качестве полной замены SDL 2 и пригоден для организации выполнения программ, написанных для SDL 2, используя возможности ветки SDL 3.

Также доступен корректирующий выпуск библиотеки SDL_sound 2.0.4, надстройки над библиотекой SDL c функциями для декодирования звуковых форматов, таких как MP3, WAV, OGG, FLAC, AIFF, VOC, MOD, MID и AU. Для декодирования звуковых форматов в SDL_sound не применяются внешние библиотеки – все необходимые для декодирования исходные тексты входят в основной состав. Предоставляемый API позволяет получать звуковые данные из файлов или в форме звуковых потоков из одного или нескольких внешних источников. Поддерживается прикрепление своих обработчиков для обработки звука.

Release. Ссылка here.