Die Version 2.0.18 der SDL-Bibliothek (Simple DirectMedia Layer) wurde veröffentlicht. Diese Bibliothek zielt darauf ab, die Entwicklung von Spielen und Multimedia-Anwendungen zu vereinfachen. Die SDL-Bibliothek bietet Funktionen wie hardwarebeschleunigte Ausgabe von 2D- und 3D-Grafik, Eingabeverarbeitung, Soundwiedergabe, 3D-Rendering über OpenGL/OpenGL ES/Vulkan und viele weitere unterstützende Operationen. Die Bibliothek ist in C geschrieben und steht unter der zlib-Lizenz. Für die Nutzung der SDL-Funktionen in Projekten verschiedener Programmiersprachen sind Bindings verfügbar. Der Code der Bibliothek wird unter der Zlib-Lizenz verteilt.
In der neuen Version:
- Für jede Funktion ist die Version der SDL angegeben, in der die Funktion eingeführt wurde. Die Dokumentation in der Wiki wird automatisch mit den Header-Dateien synchronisiert.
- Neue Funktionen hinzugefügt:
- SDL_RenderGeometry() und SDL_RenderGeometryRaw() zur Darstellung beliebiger Formen über die 2D Render API.
- SDL_SetTextureUserData() und SDL_GetTextureUserData() zur Bindung von Anwendungsdaten an eine Textur.
- SDL_RenderWindowToLogical() und SDL_RenderLogicalToWindow() zur Umwandlung zwischen Fensterkoordinaten und logischen Renderkoordinaten.
- SDL_RenderSetVSync() zur Aktivierung der Ausgabe-Synchronisation mit dem vertikalen Rückkehrimpuls (vblank).
- SDL_PremultiplyAlpha() zur Anwendung von Transparenz auf Pixelblöcke im Format SDL_PIXELFORMAT_ARGB8888.
- SDL_SetWindowMouseRect() und SDL_GetWindowMouseRect() zur Begrenzung der Mauszeigerbewegung auf einen bestimmten Bereich des Fensters.
- SDL_GameControllerHasRumble(), SDL_GameControllerHasRumbleTriggers(), SDL_JoystickHasRumble() und SDL_JoystickHasRumbleTriggers() zur Überprüfung der Unterstützung von adaptiver Vibration (rumble) durch den Gamecontroller und Joystick.
- SDL_GetWindowICCProfile() zur Abrufung des ICC-Farbprofils des Fensters (ein Ereignis SDL_WINDOWEVENT_ICCPROF_CHANGED wird vorgeschlagen, um Änderungen des Profils zu überprüfen).
- Neue Hinweise hinzugefügt: SDL_HINT_APP_NAME zur Übermittlung von Informationen über den Namen der Anwendung und SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY zur Aktivierung von Transparenz für EGL-Fenster.
- Ein neues Fensterereignis SDL_WINDOWEVENT_DISPLAY_CHANGED wurde hinzugefügt, das bei Änderungen des Bildschirms, auf dem das Fenster angezeigt wird, generiert wird.
- Die Möglichkeit hinzugefügt, die exakten Bewegungseigenschaften des Mausrads mit den Feldern "preciseX" und "preciseY" in den Ereignisparametern zu bestimmen.
- Die Funktion SDL_WaitEvent() wurde überarbeitet, um die CPU-Last zu reduzieren.
- Die API hidapi wurde in die Kategorie der öffentlichen APIs verschoben und ist nun über die Header-Datei SDL_hidapi.h verfügbar.
- Auf der Windows-Plattform wurde die Erkennung der relativen Mausbewegung in Windows Remote Desktop verbessert. Es wurde eine neue Option SDL_HINT_IME_SHOW_UI hinzugefügt, um die nativen UI-Komponenten anzuzeigen (standardmäßig ausgeblendet). Für UWP-Anwendungen wird anstelle von XInput WGI für eine verbesserte Unterstützung von Eingabegeräten verwendet.
- Für die Linux-Plattform wurden die Optionen implementiert: SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME zur Bindung von Aktionen, die angezeigt werden, wenn der Bildschirmschoner deaktiviert ist; SDL_HINT_LINUX_JOYSTICK_CLASSIC zur Auswahl, welches der Geräte (/dev/input/js* oder /dev/input/event*) für den Joystick verwendet werden soll; SDL_HINT_JOYSTICK_DEVICE zum Festlegen des Geräts, das für den Joystick geöffnet wird. Die Funktion SDL_LinuxSetThreadPriorityAndPolicy() wurde hinzugefügt, um die Prioritäten von Threads zu steuern.
- Für die Android-Plattform wurde die Unterstützung für Audioausgabe und -aufnahme über die API AAudio implementiert. Die Unterstützung für den Steam Controller ist standardmäßig deaktiviert (zur Aktivierung wird die Option SDL_HINT_JOYSTICK_HIDAPI_STEAM vorgeschlagen).
Zusatzinformation: Einer der Autoren von SDL, Ryan Gordon (icculus), hat angekündigt, ein einfaches 3D-API in SDL zu integrieren, das die Schnittstellen moderner GPUs (Vulkan, Direct3D 12, Metal) unterstützen wird. Diese Entwicklung wird von Epic Games im Rahmen des Epic Megagrant-Programms finanziert. Gordon stellte den Antrag auf den Zuschuss im Mai 2021 und erhielt vor zwei Wochen eine positive Rückmeldung.
Quelle: opennet.ru
