RSGL ist eine modulare, einfach zu verwendende plattformübergreifende GUI-Bibliothek zum einfachen Erstellen von GUI-Apps und Spielen. Es kombiniert die Freiheit von GUI-Bibliotheken auf niedrigerer Ebene mit modernen C-Techniken und bietet sowohl Einfachheit als auch Komfort. Seine Hauptmerkmale sind seine eingebaute leichte Abhängigkeit und seine Flexibilität sowie seine plattformübergreifende Unterstützung. Es unterstützt derzeit Linux, Windows und MacOS, verfügt über eine zlib-Lizenz und unterstützt aufgrund der Verwendung von STB und Miniaudio viele Datenformate.
https://github.com/ColleagueRiley/RSGL
RSGL, kurz für Riley's Simple GUI Library, ist ein Tool, das die Entwicklung grafischer Benutzeroberflächen (GUIs) für Anwendungen und Spiele rationalisieren soll. Im Kern dient RSGL als modulare und plattformübergreifende Lösung, die Entwicklern die Freiheit bietet, GUIs einfach zu erstellen und gleichzeitig häufige Herausforderungen bei der GUI-Entwicklung zu meistern.
Durch die Kapselung wesentlicher GUI-Funktionen in einer leichten und vielseitigen Bibliothek ermöglicht RSGL Entwicklern, sich auf Kreativität zu konzentrieren, anstatt sich mit technischen Komplexitäten herumzuschlagen.
Ähnlich wie SDL versucht RSGL, den Benutzern nicht in die Quere zu kommen. Aber im Gegensatz zu SDL versucht RSGL, moderner zu sein und mehr für den Benutzer zu tun. Eine andere Bibliothek, mit der RSGL verglichen werden kann, ist Raylib. Ich wusste erst von Raylib, als ich bereits meinen ersten RSGL-Entwurf erstellt hatte. Oberflächlich betrachtet haben Raylib und RSGL sehr ähnliche Designs. Allerdings bietet RSGL unterschiedliche Designoptionen und einen stärkeren Fokus auf geringes Gewicht. Beispielsweise sind alle internen Abhängigkeiten von RSGL sehr leichtgewichtig und die meisten sind auch so konzipiert. Die von Raylib verwendeten Abhängigkeiten sind zwar nicht darauf ausgelegt, leichtgewichtig zu sein, wie etwa GLFW. RSGL verwendet RGFW anstelle von GLFW. Die .o-Ausgabe von GLFW beträgt ~280 KB, während die von RGFW ~46 KB beträgt. Nichtsdestotrotz können sich Raylib und RSGL sowie die beiden guten Optionen für eine GUI-Bibliothek und die von Ihnen gewählte Verwendung je nach Ihrem Geschmack und den Umständen ändern.
Eine weitere Ähnlichkeit zwischen Raylib und RSGL besteht darin, dass beide OpenGL-Abstraktionsschichten verwenden. RLGL bzw. RGL. Auf die Unterschiede werde ich hier nicht zu sehr ins Detail gehen. Es ist jedoch sehr wichtig zu beachten, wie beide ihre jeweilige Bibliothek umso stärker machen. Der Softwareentwickler kann problemlos zwischen modernem und älterem OpenGL kompilieren. RGL ermöglicht dem Programm außerdem, während der Laufzeit mithilfe von Legacy-Funktionen zu rendern. Dies ermöglicht dem Programm eine Ausfallsicherheit, eine weitere Möglichkeit, wie RSGL dem Benutzer Komfort bietet.
Genug davon, wie großartig RSGL ist. Hier ist ein Beispiel, damit Sie selbst entscheiden können, ob RSGL wirklich das ganze Lob wert ist.
#define RSGL_NO_AUDIO /* we don't want to link with miniaudio.h */ #define RSGL_IMPLEMENTATION #include "RSGL.h" #include <stdbool.h> int main() { /* create window and pass arg to make sure it's centered */ RSGL_window* win = RSGL_createWindow("example", RSGL_RECT(0, 0, 500, 500), RSGL_CENTER); bool legacy = false; bool running = true; while(running) { /* check events until there are no more events to check */ while(RSGL_window_checkEvent(win)) { if (win->event.type == RGFW_quit || RSGL_isPressedI(win, RGFW_Escape)) { running = false; break; } /* if the space bar is pressed, toggle rendering using opengl legacy */ if (win->event.type == RSGL_keyPressed && win->event.keyCode == RGFW_Space) { legacy = !legacy; RSGL_legacy(legacy); } } /* draw a basic rectangle and clear the screen */ RSGL_drawRect(RSGL_RECT(200, 200, 200, 200), RSGL_RGB(255, 0, 0)); RSGL_window_clear(win, RSGL_RGB(255, 255, 255)); } RSGL_window_close(win); }
Kompilieren:
Windows: gcc -lopengl32 -lshell32 -lgdi32
Linux: gcc -lGLX -lX11 -lm
macos: gcc -framework Foundation -framework AppKit -framework OpenGL -framework CoreVideo
HINWEIS: Dies ist ein sehr einfaches Beispiel. Im Repo sind viele weitaus weniger grundlegende Beispiele enthalten.
Die Gesamtfunktionen von RSGL laut Aufzählung:
RSGL_NO_WIDGETS (stellt sicher, dass RSGL keine Widget-Funktionen enthält)
RSGL_NO_AUDIO (bewirkt, dass RSGL keine Audiofunktionen enthält)
RSGL_NO_WINDOW – kein RSGL_window, stattdessen wird RSGL_graphics verwendet [dies dient zur Verwendung eines anderen Fenstermanagers als RGFW]
RSGL_NO_TEXT – keine Textwiedergabefunktionen enthalten
RGFW_NO_WIDGETS – keine Widgets einschließen
RSGL_NO_AUDIO – keine Audiofunktionen enthalten
RSGL_NO_MINIAUDIO_IMPLEMENTATION – #define MINIAUDIO_IMPLEMENTATION nicht in
diesen Header (Sie müssen miniaudio auf andere Weise verlinken, um Audio zu verwenden)
RSGL_NO_SAVE_IMAGE – Bilder nicht speichern/laden (verwenden Sie nicht RSGL_drawImage, wenn Sie dies verwenden),
RSGL_drawImage speichert den Dateinamen + die Textur, damit es geladen werden kann
wenn du später danach fragst. Dadurch wird das deaktiviert
RSGL verwendet die libpng-Lizenz. Das bedeutet, dass Sie RSGL frei verwenden können, solange Sie nicht behaupten, dass Sie diese Software geschrieben haben, geänderte Versionen als solche markieren und die im Header enthaltene Lizenz behalten.
Das RSGL Repo finden Sie unter:
https://github.com/ColleagueRiley/RSGL
Das obige ist der detaillierte Inhalt vonRSGL | Modulare, plattformübergreifende GUI-Bibliothek nur für Header zum einfachen Erstellen von GUI-Software nach Ihren Wünschen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!