The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

01.01.2026 08:11

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

SDL 3.4.0 является второй значительной стабильной веткой в серии SDL 3.x - первой стабильной веткой была объявлена серия 3.2.x, а ветка 3.3.x позиционировалась как экспериментальная. Главные изменения в SDL 3.4.0 связаны с улучшением переносимости между API 3D GPU и API для двумерной отрисовки, расширением поддержки сборки в WebAssembly при помощи компилятора Emscripten, улучшению работы с графическими планшетами и цифровыми перьями, появлению встроенной поддержки формата изображений PNG.

Среди новых возможностей в SDL 3.4.0:

  • Добавлена встроенная поддержка изображений в формате PNG, для работы с которыми предложены функции SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() и SDL_SavePNG_IO(). Для определения формата (PNG или BMP) и загрузки изображений в качестве поверхностей добавлены функции SDL_LoadSurface() и SDL_LoadSurface_IO().
  • Добавлена функция SDL_RotateSurface() для создания повёрнутой копии поверхности.
  • Добавлена функция SDL_CreateAnimatedCursor() для создания цветных анимированных курсоров, а также признак SDL_HINT_MOUSE_DPI_SCALE_CURSORS для автоматического масштабирования курсоров в привязке к уровню масштабирования экрана.
  • Добавлены функции SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() и SDL_GetWindowProgressValue() для показа прогресса операции в пиктограмме приложения в панели задач.
  • Добавлены свойства для использования GPU API со старым оборудованием.
  • Добавлено свойство SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER и SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA для настройки и задействования возможностей API Vulkan при создании устройств GPU.
  • Добавлена функция SDL_GetGPUDeviceProperties() для запроса информации об GPU.
  • Добавлены функции SDL_CreateGPURenderer() и SDL_GetGPURendererDevice() для задействования GPU при 2D-отрисовке, а также SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() и SDL_DestroyGPURenderState() для задействования фрагментных шейдеров при 2D-отрисовке.
  • При 2D-отрисовке при помощи GPU реализована поддержка YUV-текстур и HDR. Добавлена поддержка текстур с палитрами, для работы с которыми добавлены функции SDL_GetTexturePalette() и SDL_SetTexturePalette(). Добавлены функции SDL_GetPixelFormatFromGPUTextureFormat() и SDL_GetGPUTextureFormatFromPixelFormat() для преобразования форматов текстур, а также параметры SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER и SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER для создания 2D-текстур из GPU-текстур. Для настройки текстур добавлены функции SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode(), SDL_SetRenderTextureAddressMode().
  • Добавлен параметр SDL_SCALEMODE_PIXELART для использования оптимизированного для пиксельной графики алгоритма масштабирования.
  • Реализованы события SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED, SDL_EVENT_SCREEN_KEYBOARD_SHOWN, SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE, SDL_EVENT_PINCH_END и SDL_EVENT_AUDIO_DEVICE_ADDED, срабатывающие при изменении границ, появлении/скрытии экранной клавиатуры, экранных жестах и добавлении звукового устройства.
  • Добавлены функции SDL_PutAudioStreamDataNoCopy() и SDL_PutAudioStreamPlanarData() для более эффективной обработки звуковых потоков.
  • Добавлена поддержка игровых контроллеров Nintendo Switch 2, подключённых через USB. Расширена поддержка контроллеров 8BitDo, FlyDigi и Hand Held Legend SInput.
  • Для улучшения работы WebAssembly-приложений, собираемых при помощи компилятора Emscripten, добавлена функция SDL_SetWindowFillDocument() и реализованы параметры SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING и SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING.
  • На платформе Linux реализована поддержка атомарных операций при использовании KMSDRM, активируемых при помощи свойства SDL_HINT_KMSDRM_ATOMIC. Добавлен параметр SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER для запроса устройства вывода wl_output, ассоциированного с экраном, в окружениях на базе Wayland.


  1. Главная ссылка к новости (https://discourse.libsdl.org/t...)
  2. OpenNews: Релиз мультимедийной библиотеки SDL 3
  3. OpenNews: Проект SDL3Lite развивает версию библиотеки SDL3 с поддержкой старых систем
  4. OpenNews: В библиотеке SDL3 отменяют переход на Wayland по умолчанию (отмена отложена)
  5. OpenNews: Первый выпуск sdl12-compat, слоя совместимости с SDL 1.2, работающего через SDL 2
  6. OpenNews: Мультимедийная библиотека SDL переходит на использование Wayland по умолчанию
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64537-sdl
Ключевые слова: sdl
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (49) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:35, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Неплохой релиз. Жаль, что поддержку png впихнули, но это связано с поддержкой работы с иконками в трее, так что ладно
     
     
  • 2.2, Аноним (2), 10:58, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Что плохого в пнг?
     
     
  • 3.13, Аноним (13), 14:18, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Does SDL support PCX, JPG, PNG, etc...
    The BMP and WAV file loaders included with SDL are simple examples demonstrating how to load an image and sound format. You should be able to write your own reader for any format. The main library is supposed to be fast and small, and so does not include any additional loaders
     
     
  • 4.14, Аноним (13), 14:22, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >>simple examples

    sdl_wave.c на 2000 строк
    прикольный "простой" пример.

     
     
  • 5.51, Аноним (51), 02:41, 02/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > sdl_wave.c на 2000 строк
    > прикольный "простой" пример.

    Ок, а за сколько строк С кода ты напишешь загрузчик WAV?

     
  • 2.5, Аноним (5), 11:57, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Сильно жаль? Прям вот очень? Ок, держи нас в курсе. А то формат-то офигенный, а ты так прям весь расстроился.
     
     
  • 3.11, Аноним (1), 13:52, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    да, ведь png как и bmp и wav никакого отношения к прослойке для работы с оборудованием не имеет.
     
     
  • 4.52, Аноним (51), 02:42, 02/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > да, ведь png как и bmp и wav никакого отношения к прослойке для работы с оборудованием не имеет.

    Они тебя как-то трогают, или что? В чем конкретно проблема?

     
  • 2.25, Аноним (25), 18:28, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это мультимедийная библиотека, там вообще должны быть все видео, аудио и фото форматы, по идее
     
     
  • 3.31, Аноним (-), 20:06, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это мультимедийная библиотека, там вообще должны быть все видео, аудио и
    > фото форматы, по идее

    Ты же лопнешь, деточка! Ffmpeg когда-нибудь видел? И как тебе оно? А теперь представь себе интеграцию оного - в libsdl! Он сразу раз в пять распухнет. В общем кому надо - берет ffmpeg отдельно, сам.

    А SDL немного другой мандат - simple directmedia layer. Т.е. апи абстракции вывода аудио, графония и обработки ввода для игр, плееров и проч. Чтою не париться особенностями каждой платформы в вооооон той игре допустим.

     
  • 2.29, Аноним (29), 19:44, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Жаль, что поддержку png впихнули, но это связано с поддержкой работы
    > с иконками в трее, так что ладно

    Его и так почти все перли - ибо популярный формат для ассетов и проч. Только приходилось добавочной SDLной либой-довеском его вкрячивать. И png уж явно популярнее BMP всяко. Хоть у них обоих и есть свои дурацкости.

     

  • 1.3, Мемоним (?), 10:58, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA

    Прям напомнило ОченьДлиннаяФункцияНепонятногоНазначенияИмениБорисаНуралиева()

     
     
  • 2.7, Аноним (7), 12:57, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    хотели так SDLPGPUDEVCVULREHARDACCBOOL?
     
     
  • 3.9, Мемоним (?), 13:50, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Хотели SDL.vkGPUDevice.ReqHWA
     
     
  • 4.24, Аноним (7), 18:04, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    //github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_gpu.h

    строка 2354

    #define SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN         "SDL.gpu.device.create.vulkan.requirehardwareacceleration"

    что-то изменилось?

     

  • 1.4, Аноним (4), 11:36, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    В некоторых прогах до сих пор сидят на 1.0 из за косяков 2.0, а тут 3.0. Я на нем еще ничего напсианного не видно.
     
     
  • 2.6, Аноним (6), 12:56, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это нормально, только бы не дропали старые версии, переписывать на новое может оказаться некому.
     
  • 2.36, Аноним (36), 20:46, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > В некоторых прогах до сих пор сидят на 1.0

    А список этих прог можно в студию, или просто васян не осилил новую версию?

     
     
  • 3.44, Аноним (51), 21:13, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > А список этих прог можно в студию, или просто васян не осилил новую версию?

    Это те проги, на которые васяны забили еще в нулевых. Но виновата SDL2, ага.

     
     
  • 4.47, _kp (ok), 23:32, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Если прога написана под какую то из версий sdl, и всё устраивает, сама прога работает, да и автор жив здоров, то только ради новой версии её не часто не переписывают. Могут быть более важные или интересные дела.

    Знаю, что если лень ковыряться что переломали в API вручную, перенос с помощью ИИ с одной версии SDL на другую делается за несколько секунд и первой же попытки. Но, бывает что не требуется ничего переписывать. Да и что добавится, например при портированиии с 1 на вторую версию? В основном, из того что заметно, мыльное масштабирование добавится.

     
  • 2.48, Ilya Indigo (ok), 00:16, 02/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Например, в openSUSE Tumbleweed уже давно выкинyли SDL1 и SDL2 и используют только SDL3 с пакетами совместимости SDL1 и SDL2.
    Все игры/эмуляторы/соурспорты на SDL1 и SDL2 работают с SDL3 даже НЕ понимая этого, и для SDL1-приложений появляется обработка мультимедийных клавиш в полноэкранном режиме, чего в SDL1 не было!
    На чистом SDL3 работает, например dolphin-emu (эмулятор Nintendo GameCube/Wii) и прекрасно работает.

    > В некоторых прогах до сих пор сидят на 1.0 из за косяков 2.0
    > из за косяков 2.0

    Вы эту чушь сами только что придумали?

     

  • 1.10, Аноним (1), 13:51, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    windows.h здорового человека
     
     
  • 2.12, Аноним (12), 13:56, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    windows.h здорового человека это mingw
     

  • 1.16, рассерженый фанат sdl (?), 14:36, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL/Direct3D/Metal/Vulkan
    Ну и что поддержка png, bmp, wav (включая ms-adpcm и ima-adpcm) делает в данной библиотеке, когда для этих целей существуют sdl_image и sdl_mixer?
     
     
  • 2.17, рассерженый фанат sdl (?), 14:46, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    sdl это bloatware. они добавили 2d api, gpu api и кучу других абстракций. это никак не low level access
     
     
  • 3.19, рассерженый фанат sdl (?), 14:52, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а еще эти audiostream, которые конвертируют сэмплы на лету перед подачей на аудиокарту.
    Так и до интеграции lua недалеко
     
     
  • 4.30, Аноним (-), 19:59, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > а еще эти audiostream, которые конвертируют сэмплы на лету перед подачей на аудиокарту.

    То ли дело когда вон там апя и система умеет только 48000 какое, а у нас 22050 было - и у системы нет своего ресэмплера и микшера - так что SDL выдает жутко хрипатый крап.

    Пардон - но этот блоат вполне оправдан. Ибо абстрагирует взбрыки и заскоки ВСЕХ мыслимых систем - до ОДИНАКОВОГО common denominator на который уже можно уповать. Везде и всюду. Даже на всякой эзотерике если кто и туда ухитрится собрать сабжа.

    А собирают его под всяко разно. Скажем Android, Nintendo Switch, и наверное еще что-нибудь этакое.

     
     
  • 5.38, рассерженый фанат sdl (?), 20:55, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>умеет только 48000 какое

    при чем тут это? открывай в любом формате в каком пожелаешь. это не то же самое что автоконвертация на лету.

     
     
  • 6.43, Аноним (51), 21:11, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> То ли дело когда вон там апя и система умеет только 48000 какое, а у нас 22050 было
    > при чем тут это? открывай в любом формате в каком пожелаешь

    По-моему, ты не понимаешь, о чем говоришь. Какое "открывай в любом формате", если тебе чел прямо написал о случае, когда аудиокарта поддерживает только определенный набор сэмплрейтов и форматов сэмплов?

     
  • 6.45, Аноним (-), 21:54, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > при чем тут это? открывай в любом формате в каком пожелаешь.
    > это не то же самое что автоконвертация на лету.

    И потом мне что, самому ресемплить под возможности системы? Узнаая их для начала? А оно мне надо?! Сабж юзают как раз чтобы этим мозг не делать.

     
  • 3.22, Аноним (51), 17:50, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > они добавили 2d api, gpu api и кучу других абстракций. это никак не low level access

    В таких абстракциях как бы и весь смысл SDL. Если тебе нужен "low level access", то зачем тебе SDL?

    > sdl это bloatware

    Нет, потому что вся подобная функциональность отключается флажками компиляции.

     
     
  • 4.40, рассерженый фанат sdl (?), 20:57, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    sdl нужен чтоб весь этот доступ одинаковым способом работал на разных ОС
     
     
  • 5.42, Аноним (51), 21:08, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> В таких абстракциях как бы и весь смысл SDL.
    > sdl нужен чтоб весь этот доступ одинаковым способом работал на разных ОС

    Я тебе буквально об этом и написал: абстракции как раз и дают этот "одинаковый способ".

     

  • 1.18, Аноним (18), 14:46, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Я надеюсь не такой идиотизм, как в большинстве опенсорсных игр, когда png распак... большой текст свёрнут, показать
     
     
  • 2.20, Аноним (20), 15:23, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Не говоря уже о том, что во многих случаях картинка спрайта сдела без изврата, и её можно аппроксимировать цветными треугольниками, и соответственно вместо текстуры хранить эти треугольники, экономяя память и получив автомасштабирование.
     
  • 2.23, Аноним (51), 18:02, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты реально вместо игры в 2D спрайтовую игру сидишь и замеряешь потребление вид... большой текст свёрнут, показать
     
  • 2.28, Аноним (28), 19:00, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> поддержка изображений в формате PNG
    > Я надеюсь не такой идиотизм, как в большинстве опенсорсных игр, когда png распаковывается в RGB-массив, когда простенькие 2D спрайтовые игры уровня 90х жрут память как не в себя, потому что разработчик не заморочился сделать компрессию текстур, кеширование и  memory-mapping.

    Осталось только понять, как все то, что ты настрочил, относиться к SDL и цитируемой тобой поддержке загрузки PNG картинок в памятьв частности.

     
     
  • 3.32, Аноним (32), 20:17, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Что тут не понятного SDLу не следовало экспортировать функцию SDL_LoadPNG в при... большой текст свёрнут, показать
     
     
  • 4.39, Аноним (51), 20:56, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Чел, иди проспись Какое еще texture_compression, если SDL_LoadPNG грузит изобра... большой текст свёрнут, показать
     
     
  • 5.49, Аноним (49), 01:52, 02/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Изображения должны быть не в памяти, а на HDD А в память их должна грузить либо... большой текст свёрнут, показать
     
     
  • 6.50, Аноним (51), 02:39, 02/01/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.26, Аноним (51), 18:29, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > API 3D GPU и API для двумерной отрисовки

    Самое большое разачарование с выходом SDL 3 стало то, что они так и не привели SDL_Renderer в человеческий вид. Высокоуровневое 2D API, в котором нельзя нарисовать повернутый на N градусов прямоугольик, не говоря уже о банальном круге - это какой-то позор. Зачем было добавлять такой огрызок - так и осталось для меня загадкой.

     
  • 1.27, Аноним (27), 18:49, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлена встроенная поддержка изображений в формате PNG, для работы с которыми предложены функции SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() и SDL_SavePNG_IO(). Для определения формата (PNG или BMP) и загрузки изображений в качестве поверхностей добавлены функции SDL_LoadSurface() и SDL_LoadSurface_IO().

    Так вот почему в OpenXRay (неофициальном порте Сталкера на Linux) Splash Screen в формате BMP. Походу, его показывают ещё до того, как запустилась сама игра (до появления окна с игрой). А значит, ранее был доступен только BMP.

     
     
  • 2.34, Аноним (34), 20:33, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А толку. Новая версия ждалкера, говорят, глюкодром на уровне предыдущих. Вероятно в переиспользованном движке как был глюкодром, так и остался. Говорят что в новой версии даже A-Life доломали, я не понимаю, как это вообще возможно, была же рабочая версия. А в новом говорят нового ничего, тот же самый экспериенс, только с другим сюжетом и более высокими системными требованиями. Даже качать не буду, мне испорченных нервов от ЗП после того, как игра с определённой точки вылетать стала, и никакие патчи это не чинили, хватило. Пусть GSC сами наслаждаются своим глюкодромом.
     
     
  • 3.35, Аноним (27), 20:45, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > говорят

    Ну, я посмотрел пару десятков стримов и обзоров. Нормальный такой глюкодром, не больше чем у других AAA-игр.

    Коммент-то не про это. Выше спрашивали, зачем в SDL нужна поддержка PNG, когда она должна быть в SDL_image? Ну вот, походу, и ответ на вопрос - чтобы Splash Image показывать перед спавном окна, и следовательно до того, как в дело пошёл SDL_image.

     
     
  • 4.41, рассерженый фанат sdl (?), 20:59, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    нет, не для этого
     

  • 1.33, Аноним (33), 20:30, 01/01/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какой директ-то поддерживается?

    12? 12.1?

     
     
  • 2.37, Аноним (36), 20:49, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ваш Radeon 9200 SE не покатит.
     
  • 2.46, Аноним (-), 21:56, 01/01/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Какой директ-то поддерживается?

    Сабж - не двигло 3D рендера как таковое, внезапно.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру