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 | Bibliothèque GUI multiplateforme modulaire avec en-tête uniquement pour créer facilement un logiciel GUI à votre manière !

WBOY
WBOYoriginal
2024-07-16 21:31:11772parcourir

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.

The RSGL logo

Introduction au RSGL

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.

Contexte de RSGL

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.

Utiliser le code

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.

Points d'intérêt

Les fonctionnalités générales de RSGL, sous forme de liste à puces, sont :

  • Pas de dépendances externes, toutes les bibliothèques requises sont incluses dans RSGL et sont également très légères
  • Prend en charge plusieurs plates-formes, Windows, MacOS, Linux, ect
  • Prend en charge plusieurs versions d'OpenGL (vous permettant même de changer pendant l'exécution)
  • Utilise d'autres petites dépendances légères
  • Couche d'abstraction OpenGL : RGL (qui est également sa propre bibliothèque à en-tête unique)
  • Prend en charge plusieurs formats de polices et d'images grâce à stb_truetype.h et stb_image.h
  • Prend en charge plusieurs formats audio grâce à miniaudio.h
  • De nombreux exemples inclus
  • Gratuit et Open Source avec une licence très flexible

Modules RSGL

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

Schéma RSGL-Architecture

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

Licence

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.

note finale

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn