Została wydana biblioteka SDL 3.4.0 (Simple DirectMedia Layer). Biblioteka ma na celu uproszczenie pisania gier i aplikacji multimedialnych, oferując takie możliwości, jak przyspieszony sprzętowo rendering grafiki 2D i 3D, obsługa wejścia, odtwarzanie dźwięku oraz wyjście 3D przez OpenGL, OpenGL ES, Metal, Direct3D lub Vulkan. Kod jest napisany w języku C i jest dostępny na licencji Zlib. Dostarczane są interfejsy do wykorzystania SDL w projektach w różnych językach programowania.
SDL 3.4.0 jest drugą istotną stabilną wersją w serii SDL 3.x — pierwsza stabilna wersja została ogłoszona w serii 3.2.x, a wersja 3.3.x była klasyfikowana jako eksperymentalna. Główne zmiany w SDL 3.4.0 dotyczą poprawy przenośności między API 3D GPU a API do renderowania dwuwymiarowego, rozszerzeniem wsparcia dla kompilacji w WebAssembly przy użyciu kompilatora Emscripten, poprawą obsługi tabletów graficznych i rysików oraz wprowadzeniem wbudowanej obsługi formatu obrazów PNG.
Wśród nowych możliwości w SDL 3.4.0:
- Dodano wbudowaną obsługę obrazów w formacie PNG, dla których zaproponowano funkcje SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() i SDL_SavePNG_IO(). Aby określić format (PNG lub BMP) i załadować obrazy jako powierzchnie, dodano funkcje SDL_LoadSurface() i SDL_LoadSurface_IO().
- Dodano funkcję SDL_RotateSurface() do tworzenia obróconej kopii powierzchni.
- Dodano funkcję SDL_CreateAnimatedCursor() do tworzenia kolorowych animowanych kursorów oraz wskaźnik SDL_HINT_MOUSE_DPI_SCALE_CURSORS do automatycznego skalowania kursorów w zależności od poziomu w skalowaniu ekranu.
- Dodano funkcje SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() i SDL_GetWindowProgressValue() do wyświetlania postępu operacji w ikonie aplikacji na pasku zadań.
- Dodano właściwości do wykorzystania API GPU ze starszym sprzętem.
- Dodano właściwość SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER oraz SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA do konfigurowania i aktywowania możliwości API Vulkan przy tworzeniu urządzeń GPU.
- Dodano funkcję SDL_GetGPUDeviceProperties() do zapytania o informacje o GPU.
- Dodano funkcje SDL_CreateGPURenderer() i SDL_GetGPURendererDevice() do wykorzystania GPU w renderowaniu 2D, a także SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() i SDL_DestroyGPURenderState() do wykorzystywania shaderów fragmentowych podczas renderowania 2D.
- Przy renderowaniu 2D za pomocą GPU wprowadzono wsparcie dla tekstur YUV i HDR. Dodano obsługę tekstur z paletami, dla których wprowadzono funkcje SDL_GetTexturePalette() i SDL_SetTexturePalette(). Dodano funkcje SDL_GetPixelFormatFromGPUTextureFormat() i SDL_GetGPUTextureFormatFromPixelFormat() do konwersji formatów tekstur, a także parametry SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER i SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER do tworzenia tekstur 2D z tekstur GPU. Wprowadzono funkcje SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode(), SDL_SetRenderTextureAddressMode() do konfiguracji tekstur.
- Dodano parametr SDL_SCALEMODE_PIXELART do użycia zoptymalizowanego algorytmu skalowania dla grafiki pikselowej.
- Wprowadzone zdarzenia 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 oraz SDL_EVENT_AUDIO_DEVICE_ADDED, które są wyzwalane przy zmianie granic, pojawieniu/ukryciu klawiatury ekranowej, gestach dotykowych i dodawaniu urządzenia audio.
- Dodano funkcje SDL_PutAudioStreamDataNoCopy() i SDL_PutAudioStreamPlanarData() dla efektywniejszej obróbki strumieni audio.
- Dodano wsparcie dla kontrolerów gier Nintendo Switch 2 podłączonych przez USB. Rozszerzono wsparcie dla kontrolerów 8BitDo, FlyDigi oraz Hand Held Legend SInput.
- Aby poprawić działanie aplikacji WebAssembly tworzonych przy użyciu kompilatora Emscripten, dodano funkcję SDL_SetWindowFillDocument() oraz wprowadzono parametry SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING i SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING.
- Na platformie Linux wprowadzono wsparcie dla operacji atomowych przy użyciu KMSDRM, aktywowanych za pomocą właściwości SDL_HINT_KMSDRM_ATOMIC. Dodano parametr SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER do zapytania o urządzenie wyjściowe wl_output powiązane z ekranem w środowiskach opartych na Wayland.
Źródło: opennet.ru
