SDL 3.4.0 Multimedia Library Release

SDL 3.4.0 (Simple DirectMedia Layer) is now available. This library is designed to simplify the development of games and multimedia applications, offering features such as hardware-accelerated 2D and 3D graphics, input processing, audio playback, and 3D rendering via OpenGL, OpenGL ES, Metal, Direct3D, and Vulkan. The code is written in C and licensed under the Zlib license. Bindings are provided for using SDL in projects written in various programming languages.

SDL 3.4.0 is the second major stable branch in the SDL 3.x series—the first stable branch was announced as 3.2.x, while 3.3.x was positioned as experimental. The main changes in SDL 3.4.0 include improved portability between the 3D GPU API and the 2D rendering API, expanded support for WebAssambly compilation using the Emscripten compiler, improved support for graphics tablets and digital pens, and native support for the PNG image format.

New features in SDL 3.4.0 include:

  • Built-in support for PNG images has been added, with the SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG(), and SDL_SavePNG_IO() functions available for working with them. The SDL_LoadSurface() and SDL_LoadSurface_IO() functions have been added for determining the format (PNG or BMP) and loading images as surfaces.
  • Added SDL_RotateSurface() function to create a rotated copy of a surface.
  • Added the SDL_CreateAnimatedCursor() function for creating colored animated cursors, as well as the SDL_HINT_MOUSE_DPI_SCALE_CURSORS flag for automatically scaling cursors based on the screen zoom level.
  • Added SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState(), and SDL_GetWindowProgressValue() functions to display the progress of an operation in the application's taskbar icon.
  • Added properties for using the GPU API with older hardware.
  • Added SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER and SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA properties to configure and enable Vulkan API features when creating GPU devices.
  • Added SDL_GetGPUDeviceProperties() function to query GPU information.
  • Added SDL_CreateGPURenderer() and SDL_GetGPURendererDevice() functions to enable the GPU for 2D rendering, as well as SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState(), and SDL_DestroyGPURenderState() to enable fragment shaders for 2D rendering.
  • Support for YUV textures and HDR is now available for 2D GPU rendering. Support for textures with palettes has been added, with the SDL_GetTexturePalette() and SDL_SetTexturePalette() functions. The SDL_GetPixelFormatFromGPUTextureFormat() and SDL_GetGPUTextureFormatFromPixelFormat() functions have been added for converting texture formats, as well as the SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER and SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER parameters for creating 2D textures from GPU textures. To configure textures, the functions SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode(), SDL_SetRenderTextureAddressMode() have been added.
  • Added SDL_SCALEMODE_PIXELART parameter to use a pixel art optimized scaling algorithm.
  • The 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 and SDL_EVENT_AUDIO_DEVICE_ADDED events are implemented, which are triggered when changing boundaries, showing/hiding the on-screen keyboard, on-screen gestures and adding an audio device.
  • Added SDL_PutAudioStreamDataNoCopy() and SDL_PutAudioStreamPlanarData() functions for more efficient processing of audio streams.
  • Added support for Nintendo Switch 2 game controllers connected via USB. Expanded support for 8BitDo, FlyDigi, and Hand Held Legend SInput controllers.
  • To improve the performance of WebAssambly applications built using the Emscripten compiler, the SDL_SetWindowFillDocument() function has been added and the SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING, and SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING parameters have been implemented.
  • On the Linux platform, support for atomic operations when using KMSDRM has been implemented, enabled via the SDL_HINT_KMSDRM_ATOMIC property. The SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER parameter has been added to query the wl_output output device associated with the screen in Wayland-based environments.

Source: opennet.ru

Buy reliable hosting for sites with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster