Maison > Article > développement back-end > RSGL | Bibliothèque GUI multiplateforme modulaire avec en-tête uniquement pour créer facilement un logiciel GUI à votre manière !
RSGL est une bibliothèque GUI multiplateforme modulaire simple à utiliser pour créer facilement des applications et des jeux GUI. Il combine la liberté des bibliothèques GUI de niveau inférieur avec les techniques C modernes, offrant à la fois simplicité et commodité. Ses principales caractéristiques sont sa dépendance légère intégrée et sa flexibilité, son support multiplateforme. Il prend actuellement en charge Linux, Windows et MacOS, dispose d'une licence zlib et, grâce à son utilisation de STB et miniaudio, prend en charge de nombreux formats de données.
https://github.com/ColleagueRiley/RSGL
RSGL, abréviation de Riley's Simple GUI Library, est un outil conçu pour rationaliser le développement d'interfaces utilisateur graphiques (GUI) pour les applications et les jeux. À la base, RSGL sert de solution modulaire et multiplateforme, offrant aux développeurs la liberté de créer facilement des interfaces graphiques tout en surmontant les défis courants rencontrés dans le développement d'interfaces graphiques.
En encapsulant les fonctionnalités essentielles de l'interface graphique dans une bibliothèque légère et polyvalente, RSGL permet aux développeurs de se concentrer sur la créativité plutôt que de se battre avec des complexités techniques.
Tout comme SDL, RSGL essaie de ne pas gêner les utilisateurs. Mais contrairement à SDL, RSGL essaie d'être plus modernisé et de faire plus pour l'utilisateur. Une autre bibliothèque à laquelle RSGL peut être comparé est Raylib. Je n'ai connu Raylib qu'après avoir créé ma conception initiale de RSGL. En apparence, Raylib et RSGL ont des conceptions très similaires. Cependant, RSGL propose des choix de conception différents et met davantage l’accent sur la légèreté. Par exemple, toutes les dépendances internes de RSGL sont très légères et la plupart sont conçues pour l'être. Bien que les dépendances utilisées par Raylib ne soient pas conçues pour être légères, comme GLFW. RSGL utilise RGFW au lieu de GLFW, la sortie .o de GLFW est d'environ 280 Ko tandis que celle de RGFW est d'environ 46 Ko. Néanmoins, Raylib et RSGL et les deux bons choix pour une bibliothèque GUI et celle que vous choisissez d'utiliser peuvent changer en fonction de vos goûts et des circonstances.
Une autre similitude entre Raylib et RSGL est qu'ils utilisent tous deux des couches d'abstraction OpenGL. RLGL et RGL respectivement. Je n’entrerai pas ici dans les détails des différences. Mais il est très important de noter comment ces deux éléments renforcent leur bibliothèque respective. Le créateur du logiciel peut facilement compiler entre OpenGL moderne et existant. RGL permet également au programme d'effectuer le rendu à l'aide de fonctions héritées pendant l'exécution. Cela permet au programme d'avoir une sécurité intégrée, juste une autre façon pour RSGL d'offrir du confort à l'utilisateur.
Assez parlé de la qualité du RSGL. Voici un exemple pour que vous puissiez décider par vous-même si RSGL vaut vraiment tous les éloges.
#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); }
Compilation :
Windows : gcc -lopengl32 -lshell32 -lgdi32
Linux : gcc -lGLX -lX11 -lm
macos : gcc -framework Foundation -framework AppKit -framework OpenGL -framework CoreVideo
REMARQUE : Il s'agit d'un exemple très basique, il existe de nombreux exemples beaucoup moins basiques inclus dans le dépôt.
Les fonctionnalités générales de RSGL, sous forme de liste à puces, sont :
RSGL_NO_WIDGETS (fait en sorte que RSGL n'inclue pas de fonctions de widget)
RSGL_NO_AUDIO (fait en sorte que RSGL n'inclue pas de fonctions audio)
RSGL_NO_WINDOW - pas de RSGL_window, RSGL_graphics est utilisé à la place [c'est pour utiliser un gestionnaire de fenêtres différent autre que RGFW]
RSGL_NO_TEXT - n'inclut pas les fonctions de rendu de texte
RGFW_NO_WIDGETS - ne pas inclure les widgets
RSGL_NO_AUDIO - n'inclut pas les fonctions audio
RSGL_NO_MINIAUDIO_IMPLEMENTATION - je n'ai pas #define MINIAUDIO_IMPLEMENTATION dans
cet en-tête (vous devrez lier miniaudio d'une autre manière pour utiliser l'audio)
RSGL_NO_SAVE_IMAGE - ne pas enregistrer/charger d'images (n'utilisez pas RSGL_drawImage si vous l'utilisez),
RSGL_drawImage enregistre le nom du fichier + la texture pour pouvoir le charger
quand vous le demanderez plus tard. Cela désactive cela
RSGL utilise la licence libpng, cela signifie que vous pouvez utiliser RSGL librement tant que vous ne prétendez pas avoir écrit ce logiciel, marquez les versions modifiées comme telles et conservez la licence incluse avec l'en-tête.
Le RSGL Repo peut être trouvé à :
https://github.com/ColleagueRiley/RSGL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!