Heim > Backend-Entwicklung > C++ > Hauptteil

RSGL | Modulare, plattformübergreifende GUI-Bibliothek nur für Header zum einfachen Erstellen von GUI-Software nach Ihren Wünschen!

WBOY
Freigeben: 2024-07-16 21:31:11
Original
788 Leute haben es durchsucht

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.

The RSGL logo

Einführung in RSGL

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.

Hintergrund von RSGL

Ä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.

Verwendung des Codes

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);
}
Nach dem Login kopieren

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.

Sehenswürdigkeiten

Die Gesamtfunktionen von RSGL laut Aufzählung:

  • Keine externen Abhängigkeiten, alle erforderlichen Bibliotheken sind in RSGL enthalten und zudem sehr leichtgewichtig
  • Unterstützt mehrere Plattformen, Windows, MacOS, Linux usw.
  • Unterstützt mehrere Versionen von OpenGL (sogar der Wechsel während der Laufzeit ist möglich)
  • Verwendet andere kleine, leichtgewichtige Abhängigkeiten
  • OpenGL-Abstraktionsschicht: RGL (die ebenfalls eine eigene Single-Header-Bibliothek ist)
  • Unterstützt mehrere Schriftarten und Bildformate aufgrund von stb_truetype.h und stb_image.h
  • Unterstützt mehrere Audioformate dank miniaudio.h
  • Viele Beispiele enthalten
  • Kostenlos und Open Source mit einer sehr flexiblen Lizenz

RSGL-Module

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-Architekturdiagramm

RSGL | Modular header-only cross-platform GUI Library for easily creating GUI software your way!

Lizenz

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.

Schlussbemerkung

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage