SDL
SDL (Simple DirectMedia Layer) — свободная кроссплатформенная мультимедийная библиотека. Ее основная роль — предоставление приложениям (в основном, играм) универсального API для взаимодействия с мультимедийными функциями операционной системы, такими как графический вывод, вывод звука, ввод с клавиатуры, мыши и игровых контроллеров. SDL избавляет от необходимости учитывать различные аппаратно-программные конфигурации в коде самого приложения, позволяя сконцентрироваться на платформонезависимой логике. Для приложений, использующих OpenGL, SDL удобна тем, что предоставляет простой абстрактный механизм инициализации контекста.
SDL2 официально поддерживает Windows, macOS, Linux, iOS и Android.
Основные возможности 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.