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

SDL2 официально поддерживает Windows, macOS, Linux, iOS и Android.

https://libsdl.org

Основные возможности SDL:

  • Создание окон и управление ими;
  • Управление контекстом OpenGL;
  • Переключение видеорежимов;
  • Обработка событий, в том числе ввода с клавитатуры, мыши, игровых контроллеров, сенсорного экрана;
  • Вывод 2D-графики;
  • Вывод 3D-графики (с использованием нового низкоуровневого GPU API в SDL3);
  • Воспроизведение звука, запись с микрофона;
  • Файловый ввод/вывод;
  • Работа с временем и датой;
  • Работа с высокоточными таймерами;
  • Управление потоками;
  • Получение системной информации;
  • Работа с динамическими библиотеками;
  • Управление процессами;
  • Логирование;
  • Вывод диалоговых окон;
  • Работа с буфером обмена.

Библиотеки-расширения SDL

Существует ряд дополнительных библиотек-сателлитов, которые расширяют возможности SDL:

  • SDL_Image — мощный и простой в использовании загрузчик разнообразных форматов изображений, включая PNG, JPEG, WebP, AVIF и многих других. Очень удобен в качестве загрузчика текстур в игровом движке;
  • SDL_ttf — библиотека отрисовки текста на основе FreeType и HarfBuzz;
  • SDL_Mixer — базовый звуковой движок, способный воспроизводить популярные аудиоформаты;
  • SDL_net — сетевой движок;
  • SDL_shadercross — кросс-компилятор шейдеров. Принимает HLSL и SPIR-V на ввод и транслирует в DXBC, DXIL, SPIR-V, MSL или HLSL.