Die Bibliothek SDL 2.0.22 (Simple DirectMedia Layer) wurde veröffentlicht, um das Schreiben von Spielen und Multimedia-Anwendungen zu vereinfachen. Die SDL-Bibliothek bietet Funktionen wie hardwarebeschleunigte Ausgaben von 2D- und 3D-Grafiken, Eingabeverarbeitung, Audio-Wiedergabe, 3D-Darstellung über OpenGL/OpenGL ES/Vulkan und viele weitere begleitende Operationen. Die Bibliothek ist in C geschrieben und wird unter der Zlib-Lizenz verbreitet. Um die Funktionen von SDL in Projekten in verschiedenen Programmiersprachen zu nutzen, werden die erforderlichen Bindings bereitgestellt.
In der neuen Version:
- Die Unterstützung des Wayland-Protokolls wurde verbessert. Ursprünglich war geplant, in Umgebungen, die sowohl Wayland als auch X11 unterstützen, standardmäßig auf das Wayland-Protokoll umzusteigen. Aufgrund von Problemen in Spielen und mit NVIDIA-Treibern wurde jedoch beschlossen, den Übergang vorerst zu verschieben. In Wayland-Umgebungen mit dem XWayland-Komponent wird weiterhin die Ausgabe über das X11-Protokoll verwendet. Um Wayland zu verwenden, kann die Umgebungsvariable „SDL_VIDEODRIVER=wayland“ vor dem Start der Anwendung gesetzt oder im Code die Funktion ‘SDL_SetHint(SDL_HINT_VIDEODRIVER, „wayland,x11“)‘ vor dem Aufruf von SDL_Init() hinzugefügt werden. Für die Kompilierung mit Wayland ist mindestens die Version libwayland-client 1.18.0 erforderlich.
- Die Funktion SDL_RenderGetWindow() wurde hinzugefügt, um das mit dem SDL Renderer assoziierte Fenster zu erhalten.
- Ein Satz von Funktionen zur Manipulation rechteckiger Bereiche wurde hinzugefügt (Bestimmung des Punktes innerhalb, Löschen, Vergleichen, Vereinigung usw.), die mit Koordinaten und Größen basierend auf Fließkommazahlen arbeiten: SDL_PointInFRect(), SDL_FRectEmpty(), SDL_FRectEquals(), SDL_FRectEqualsEpsilon(), SDL_HasIntersectionF(), SDL_IntersectFRect(), SDL_UnionFRect(), SDL_EncloseFPoints() und SDL_IntersectFRectAndLine().
- Die Funktion SDL_IsTextInputShown() wurde hinzugefügt, um die Sichtbarkeit des Texteingabebereichs zu überprüfen.
- Die Funktion SDL_ClearComposition() wurde hinzugefügt, um den Texteingabebereich zu löschen, ohne die Eingabemethode (IME) zu deaktivieren.
- Das Ereignis SDL_TEXTEDITING_EXT wurde hinzugefügt, um lange Texteingabebereiche zu verarbeiten, sowie das Zeichen SDL_HINT_IME_SUPPORT_EXTENDED_TEXT, um dieses Ereignis zu aktivieren.
- Das Zeichen SDL_HINT_MOUSE_RELATIVE_MODE_CENTER wurde hinzugefügt, um die Einschränkung der Maus nur auf das Fensterzentrum zu aktivieren, anstatt auf das gesamte Fenster, wenn der relative Modus aktiviert ist.
- Die automatische Erfassung der Maus wurde aktiviert, wenn Maustasten gedrückt werden. Um dies zu deaktivieren, wurde das Zeichen SDL_HINT_MOUSE_AUTO_CAPTURE vorgeschlagen.
- Die Zeichen SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL und SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN wurden hinzugefügt, um Informationen über die Verwendung von OpenGL oder Vulkan in einem externen Fenster zu übermitteln.
- Das Zeichen SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE wurde hinzugefügt, um das Ereignis SDL_QUIT beim Schließen des letzten Anwendungsfensters zu übermitteln.
- Das Zeichen SDL_HINT_JOYSTICK_ROG_CHAKRAM wurde hinzugefügt, um die ROG Chakram-Maus als Joystick zu behandeln.
- Für Linux wurde das Zeichen SDL_HINT_X11_WINDOW_TYPE hinzugefügt, um den Fenstern den Parameter _NET_WM_WINDOW_TYPE zuzuweisen.
- Für Linux wurde das Zeichen SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR hinzugefügt, um libdecor mit Composite-Elementen zu verwenden, die xdg-decoration unterstützen. Servern gearbeitet werden., die xdg-decoration unterstützen.
- Für Android wurde die Funktion SDL_AndroidSendMessage() implementiert, um beliebige Befehle an den Java-Handler von SDL zu senden.
Quelle: opennet.ru
