Хороший… Плохой… Главное — у кого ружьё!
48,8
рейтинг
13 августа 2013 в 13:17

Разработка → Релиз SDL 2.0

imageПосле нескольких лет разработки наконец-то состоялся релиз библиотеки SDL 2.0.0. Слухи о разработке второй версии SDL шли уже давно, но обширный список нововведений отчасти объясняет столь долгую разработку.

Библиотека SDL предоставляет такие средства, как быстрый вывод 2D-графики, обработку ввода, проигрывание звука, вывод 3D через OpenGL и другие операции, причем делает это кросплатформенно. Список платформ обширный: Linux, Windows, Windows CE, BeOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX и QNX — и вдобавок есть неофициальные порты на другие системы.

Сама библиотека написана на C и поддерживает C++, однако есть биндинги к большинству популярных языков. Автор libsdl был нанят компанией Valve, программные продукты которой активно используют библиотеку. К тому же, теперь библиотека выходит под лицензией zlib, а не LGPLv2, как было раньше, и SDL 2.0 можно использовать в любых своих приложениях — хотя вполне возможно, что сделано это было для того, чтобы Valve смогла включить ее в Steam для Linux.

Список изменений:
  • Полная поддержка средств 3D-акселерации;
  • Поддержка OpenGL 3.0+;
  • Поддержка OpenGL ES;
  • Поддержка многооконного режима и нескольких дисплеев;
  • Поддержка нескольких звуковых устройств (плюс поддержка вывода звука в формате 7.1);
  • Android и iOS;
  • API для поддержки Multi-touch;
  • Простое API для 2D рендеринга с использованием Direct3D, OpenGL, OpenGL ES;
  • Поддержка API отдачи (force feedback) для джойстиков;
  • Управление энергопотреблением;
  • Поддержка XInput и XAudio2 в Windows
  • Улучшенная многопоточность;
  • Убрано все, что раздражало в версии 1.2;
  • Многое другое.

Версией 2.0 еще с релиз-кандидата, вышедшего в июне, уже пользуются некоторые инди-разработчики и проекты OpenSource. Valve использует SDL 2.0 для поддержки игровых контроллеров и для ряда других применений.

Загрузить: SDL 2.0.0
Руководство по миграции на версию 2.0: Migration Guide
Подробная документация (wiki): wiki.libsdl.org/
Let's Make An RPG (C++/SDL2) — Tutorials
Другие обновления: SDL_image / SDL_mixer / SDL_net / SDL_ttf
Владимир Маслов @HotWaterMusic
карма
165,7
рейтинг 48,8
Хороший… Плохой… Главное — у кого ружьё!
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (23)

  • +1
    У меня один вопрос: в предыдущих версиях я так и не нашел как можно установить объекту не целочисленную позицию. Это нужно было для плавной медленной анимации перемещений. Плюс еще поворот объектов на произвольный угол. Все это конечно можно делать программно математически, но оно того не стояло. Как дела обстоят с этим в новых версиях?
    • +1
      Насчет поворота — добавили. Некоторые на форумах даже так и пишут «SDL2 = SDL1.3 + Code for Rotation & stretch blit simultaneously». Смотреть функцию SDL_RenderCopyEx. Раньше действительно трудно приходилось.
      • 0
        То что добавили поворот это отлично. Но вот вопрос по поводу полупикселей он открыт. И заставил меня отказаться от SDL.
        К примеру как сделать очень плавное едва заметное движение облаков… С целыми пикселями получается очень некрасиво. Рывки страшные
        • 0
          Что мешает рисовать на бо'льшей текстуре с целочисленными координатами, а потом её уже рисовать в окне?
  • +3
    Использовал старый SDL, исключительно положительные впечатления, очень интересно что там в 2 сделали.
    • +2
      API по возможности сохранен, стабильность была отличная ещё год назад, как раз когда Valve сделал порт Steam для Linux на нём. Сам уже использую его активно, хорошо отрабатывать краевые моменты, например создание GL контекста вне SDL, а также Display Manager Fullscreen. Стабильная работа в multimonitor конфигурации на Linux'e (давно не хватало).
      • 0
        О! Насчет multimonitor: не проявляется больше эта надоедливая проблема с выводом картинки по центру рабочего стола, в результате чего изображение разрезается напополам мониторами?
  • 0
    Можно ли для мобильных платформ (ios и andorid), подключать сторонние библиотеки, например, opencv?
    • 0
      Возможно если сможете собрать библиотеку под выбранную OS.
    • 0
      На сколько знаю, OpenCV пока не поддерживает мобильные платформы…
  • +2
    Дабы быть точным, список официально поддерживаемых платформ: Windows, Mac OS X, Linux, iOS, и Android.
    Источник: wiki.libsdl.org/moin.fcg/Introduction
  • 0
    Эх, рано я с SDL Mixer на OpenAL перелез :(
    • 0
      А начали перелезать? Я как раз с cocos2dx аудио движка перелезаю на SDL_Mixer, так как не хватало необходимого функционала. Интересует как он справится с ~12 потоками аудио и какие есть + и -… в частности на iOS и Android
      • 0
        Извините, пропустил слово, а исправлять поздно. А почему начали перелезать?
  • +1
    Используем в OpenMW с релиза 0.25 для ввода и управления окном, нравится.
    • 0
      Аналогично, после того как переехал с дефолтного Ogre::RenderWindow на SDL + externalWindowHandle. Вздохнул свободно, а в качестве бонуса получил нормальный ввод и джойстик.
      • 0
        А мы наконец смогли сделать 64-битную сборку под OS X. У Ogre поддержка Cocoa совсем какая-то черезжопная :(
    • 0
      Как там OpenMW, по главной квест линии далеко уйти уже можно?
      • 0
        Большая часть должна быть проходима уже, можно упереться в две проблемы:

        • пока реализовано не 100% скриптовых функций;
        • какие-то квесты может быть невозможно сделать из-за не до конца реализованного AI;
  • 0
    Юхууу! Свершилось. Теперь в SDL есть аппаратное ускорение 2D графики! Я два года ждал этого.
    PS: Подскажите, в репах Debian он уже есть?
  • –8
    Советовал бы дважды подумать, прежде чем использовать это поделие: govnokod.ru/13456
    • +4
      Это плата за кроссплатформенность. Из за этого ни на какой платформе не нужно парится какой «main» прописывать. Просто и понятно(ибо в доках описано).
    • +5
      ну офигеть, все, выкидываем теперь!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.