Veröffentlichung der Multimedia-Bibliothek SDL 3.4.0

Die Veröffentlichung der SDL 3.4.0 (Simple DirectMedia Layer) Bibliothek wurde vorgestellt. Die Bibliothek zielt darauf ab, das Schreiben von Spielen und Multimedia-Anwendungen zu vereinfachen und bietet Funktionen wie hardwarebeschleunigte Ausgabe von 2D- und 3D-Grafik, Eingabeverarbeitung, Audio-Wiedergabe und 3D-Ausgabe über OpenGL, OpenGL ES, Metal, Direct3D oder Vulkan. Der Code ist in C geschrieben und wird unter der Zlib-Lizenz verbreitet. Es werden Bindings für die Verwendung von SDL in Projekten in verschiedenen Programmiersprachen bereitgestellt.

SDL 3.4.0 ist der zweite bedeutende stabile Zweig der SDL 3.x-Serie – der erste stabile Zweig war die 3.2.x-Serie, während der 3.3.x-Zweig als experimentell positioniert wurde. 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 den Build in WebAssembly mit dem Emscripten-Compiler, die Verbesserung der Funktionalität mit Grafiktabletts und digitalen Stiften sowie die Einführung von integrierter Unterstützung für das PNG-Bildformat.

Zu den neuen Funktionen in SDL 3.4.0 gehören:

  • Es wurde eine integrierte Unterstützung für PNG-Bildformate hinzugefügt, mit den Funktionen SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() und SDL_SavePNG_IO(). Zur Bestimmung des Formats (PNG oder BMP) und zum Laden von Bildern als Oberflächen wurden die Funktionen SDL_LoadSurface() und SDL_LoadSurface_IO() hinzugefügt.
  • Die Funktion SDL_RotateSurface() wurde hinzugefügt, um eine gedrehte Kopie der Oberfläche zu erstellen.
  • Die Funktion SDL_CreateAnimatedCursor() wurde hinzugefügt, um farbige animierte Cursor zu erstellen, sowie die Option SDL_HINT_MOUSE_DPI_SCALE_CURSORS für die automatische Skalierung der Cursor in Abhängigkeit vom Bildschirmmaßstab.
  • Die Funktionen SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() und SDL_GetWindowProgressValue() wurden hinzugefügt, um den Fortschritt von Vorgängen im Anwendungssymbol in der Taskleiste anzuzeigen.
  • Eigenschaften für die Verwendung von GPU-APIs 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_BOOLEA wurde hinzugefügt, um die Vulkan-API-Funktionen bei der Erstellung von GPU-Geräten anzupassen und zu aktivieren.
  • 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 der GPU wurde die Unterstützung von YUV-Texturen und HDR implementiert. Die Unterstützung von Texturen mit Paletten wurde hinzugefügt, für die die Funktionen SDL_GetTexturePalette() und SDL_SetTexturePalette() bereitgestellt werden. Es wurden die Funktionen SDL_GetPixelFormatFromGPUTextureFormat() und SDL_GetGPUTextureFormatFromPixelFormat() zur Umwandlung von Texturformaten hinzugefügt, sowie die Parameter SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER und SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER zur Erstellung von 2D-Texturen aus GPU-Texturen. Zur Konfiguration von Texturen 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 die Pixelgrafik optimierten Skalierungsalgorithmus zu verwenden.
  • 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.
  • Unterstützung für Nintendo Switch 2 Spielsteuerungen, die über USB angeschlossen sind, hinzugefügt. Die Unterstützung für 8BitDo-, FlyDigi- und Hand Held Legend SInput-Controller wurde erweitert.
  • Um die Leistung von WebAssembly-Anwendungen, die mit dem Emscripten-Compiler erstellt wurden, zu verbessern, 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 Linux-Plattform wurde die Unterstützung für atomare Operationen bei Verwendung von KMSDRM implementiert, die über die Eigenschaft SDL_HINT_KMSDRM_ATOMIC aktiviert werden können. Ein Parameter SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER wurde hinzugefügt, um das mit dem Bildschirm assoziierte Ausgabe-Gerät wl_output in Wayland-basierten Umgebungen anzufordern.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster