После нескольких лет разработки вышла новая версия библиотеки SDL (Simple Direct Layer), упрощающей написание игр и мультимедийных приложений. Работа по подготовке нового выпуска была в основном выполнена разработчиком Sam Lantinga, трудоустроенным в компании Valve. Интерес Valve к проекту связан с тем, что SDL 2.0 напрямую используется в платформе Steam.
Библиотека SDL предоставляет такие средства, как быстрый вывод 2D-графики, обработку ввода, проигрывание звука, вывод 3D через OpenGL и множество иных сопутствующих операций в кроссплатформенном виде, независимо от используемой системы. Это упрощает создание приложений и игр, которым необходимо быстро выводить двухмерную графику, проигрывать звук, использовать продвинутую обработку ввода пользователя и т.п. Библиотека выпускается под лицензией LGPLv2 и поддерживает как минимум Linux, Windows, Windows CE, BeOS, OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX и QNX. Также существует ряд неподдерживаемых официально портов на иные системы (например, существуют порты для Android и Wayland).
Основные изменения включают:
- Полное ускорение 3D-вывода;
- Полная поддержка OpenGL 3.0;
- Поддерживается OpenGL ES;
- Поддержка вывода во множество окон и дисплеев;
- Возможность вывода на несколько аудиоустройств одновременно и поддержка вывода звука в формате 7.1;
- Добавлена поддержка платформ Android и iOS;
- Добавлен простой API для 2D графики, который может использовать аппаратное ускорение Direct3D, OpenGL, OpenGL ES, а также выводиться в программном режиме;
- Добавлена поддержка обратной связи (force feedback) для джойстиков, при работе на платформах Windows, OS X и Linux;
- В Windows стали поддерживаться XInput и Xaudio2;
- Появилось API для получения данных энергопитания (например, сколько времени осталось работать от аккумулятора);
- Непрямоугольные окна;
- 32-разрядный звук (типы: целый и с плавающей точкой);
- Упрощённый API для игровых контроллеров, включая джойсткики;
- Поддержка ввода с сенсорных экранов и API для поддержки Multi-touch; ;
- Улучшена поддержка клавиатурного ввода. Поддержка одновременного использования нескольких устройств ввода (несколько мышей, клавиатур и т.п.). Полная поддержка Unicode-символов для ввода и IME;
- Улучшена поддержка полноэкранного режима. Добавлена концепция viewport для определения области вывода для полноэкранных окон;
- Поддержка горизонтальной прокрутки мышью;
- API для включения и отключения хранителя экрана;
- Поддержка многомониторных конфигураций с выводом на несколько экранов;
- Базовый drag’n’drop;
- API доступа к буферу обмена;
- Исправлено множество ошибок.