Veröffentlichung der Multimedia-Bibliothek SDL 3.4.0

Die Veröffentlichung der SDL-Bibliothek 3.4.0 (Simple DirectMedia Layer) wurde vorgestellt. Die Bibliothek zielt darauf ab, die Erstellung von Spielen und Multimedia-Anwendungen zu vereinfachen und bietet Funktionen wie hardwarebeschleunigte Ausgaben von 2D- und 3D-Grafiken, Eingabeverarbeitung, Soundwiedergabe und 3D-Ausgabe über OpenGL, OpenGL ES, Metal, Direct3D oder Vulkan. Der Code ist in C geschrieben und wird unter der Zlib-Lizenz veröffentlicht. Es gibt Wrapper, um SDL in Projekten in verschiedenen Programmiersprachen zu verwenden.

SDL 3.4.0 ist der zweite bedeutende stabile Zweig der SDL 3.x-Serie – die erste stabile Serie wurde mit 3.2.x angekündigt, während 3.3.x als experimentell galt. Die Hauptänderungen in SDL 3.4.0 betreffen die Verbesserung der Portabilität zwischen 3D-GPU-APIs und APIs für die 2D-Darstellung, die Erweiterung der Unterstützung für WebAssembly-Builds mithilfe des Emscripten-Compilers, die Verbesserung der Nutzung von Grafiktabletts und digitalen Stiften sowie die Einführung einer integrierten Unterstützung für PNG-Bildformate.

Die neuen Funktionen in SDL 3.4.0 umfassen:

  • Eine integrierte Unterstützung für PNG-Bilder wurde hinzugefügt, mit Funktionen wie SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() und SDL_SavePNG_IO. Funktionen wie SDL_LoadSurface() und SDL_LoadSurface_IO wurden hinzugefügt, um das Format (PNG oder BMP) zu bestimmen und Bilder als Oberflächen zu laden.
  • Die Funktion SDL_RotateSurface() wurde hinzugefügt, um eine gedrehte Kopie einer Oberfläche zu erstellen.
  • Die Funktion SDL_CreateAnimatedCursor() wurde hinzugefügt, um farbige animierte Cursors zu erstellen, sowie die Option SDL_HINT_MOUSE_DPI_SCALE_CURSORS, um Cursors automatisch an den Skalierungsgrad des Bildschirms anzupassen.
  • Die Funktionen SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() und SDL_GetWindowProgressValue() wurden hinzugefügt, um den Fortschritt einer Operation im Anwendungs-Icon in der Taskleiste anzuzeigen.
  • Eigenschaften für die Verwendung der GPU-API mit älterer Hardware wurden hinzugefügt.
  • Die Eigenschaft SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER und SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN wurden hinzugefügt, um die Konfiguration und Nutzung der Vulkan-API beim Erstellen von GPU-Geräten zu ermöglichen.
  • Die Funktion SDL_GetGPUDeviceProperties() wurde hinzugefügt, um Informationen über die GPU abzufragen.
  • Die Funktionen SDL_CreateGPURenderer() und SDL_GetGPURendererDevice() wurden hinzugefügt, um die GPU für die 2D-Darstellung zu nutzen, sowie SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() und SDL_DestroyGPURenderState(), um Fragment-Shader bei der 2D-Darstellung zu aktivieren.
  • Bei der 2D-Darstellung mit GPU wurde die Unterstützung für YUV-Texturen und HDR implementiert. Die Unterstützung für Texturen mit Paletten wurde hinzugefügt, für deren Verwendung die Funktionen SDL_GetTexturePalette() und SDL_SetTexturePalette() hinzugefügt wurden. Die Funktionen SDL_GetPixelFormatFromGPUTextureFormat() und SDL_GetGPUTextureFormatFromPixelFormat() wurden hinzugefügt, um Texturformate zu konvertieren, sowie die Parameter SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER und SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER zum Erstellen von 2D-Texturen aus GPU-Texturen. Für die Texturneinstellungen wurden die Funktionen SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode() und SDL_SetRenderTextureAddressMode() hinzugefügt.
  • Der Parameter SDL_SCALEMODE_PIXELART wurde hinzugefügt, um einen für Pixelgrafik optimierten Skalierungsalgorithmus zu nutzen.
  • Die Ereignisse 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 und SDL_EVENT_AUDIO_DEVICE_ADDED wurden implementiert, die bei Änderungen der Grenzen, dem Anzeigen/Verstecken der Bildschirmtastatur, Bildschirmgesten und dem Hinzufügen von Audiogeräten ausgelöst werden.
  • Die Funktionen SDL_PutAudioStreamDataNoCopy() und SDL_PutAudioStreamPlanarData() wurden hinzugefügt, um die Verarbeitung von Audiostreams effizienter zu gestalten.
  • Die Unterstützung für Nintendo Switch 2-Controller, die über USB angeschlossen sind, wurde hinzugefügt. Außerdem wurde die Unterstützung für die Controller 8BitDo, FlyDigi und Hand Held Legend SInput erweitert.
  • Um die Funktionalität von WebAssembly-Anwendungen zu verbessern, die mit dem Compiler Emscripten kompiliert werden, wurde die Funktion SDL_SetWindowFillDocument() hinzugefügt und die Parameter SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING und SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING implementiert.
  • Auf der Plattform Linux wurde die Unterstützung für atomare Operationen unter Verwendung von KMSDRM implementiert, die über die Eigenschaft SDL_HINT_KMSDRM_ATOMIC aktiviert werden. Der Parameter SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER wurde hinzugefügt, um das Ausgabegerät wl_output anzufordern, das mit dem Bildschirm in Wayland-basierten Umgebungen assoziiert ist.

Quelle: opennet.ru

60GB SSD 8Gb DDR4