RSGL |モジュラーヘッダーのみのクロスプラットフォーム GUI ライブラリにより、GUI ソフトウェアを自分の方法で簡単に作成できます。

WBOY
リリース: 2024-07-16 21:31:11
オリジナル
788 人が閲覧しました

RSGL は、GUI アプリやゲームを簡単に作成するための、モジュール式の使いやすいクロスプラットフォーム GUI ライブラリです。下位レベルの GUI ライブラリの自由さと最新の C 技術を組み合わせて、シンプルさと利便性の両方を提供します。その主な特徴は、軽量の依存関係が組み込まれていることと、柔軟性、クロスプラットフォームのサポートです。現在、Linux、Windows、MacOS をサポートしており、zlib ライセンスを持ち、STB とミニオーディオを使用しているため、多くのデータ形式をサポートしています。

The RSGL logo

RSGL の概要

https://github.com/ColleagueRiley/RSGL

Riley's Simple GUI Library の略称である RSGL は、アプリケーションやゲームのグラフィカル ユーザー インターフェイス (GUI) の開発を効率化するために設計されたツールです。 RSGL はその中核として、モジュール式のクロスプラットフォーム ソリューションとして機能し、開発者が GUI 開発で遭遇する一般的な課題を克服しながら、GUI を簡単に作成できる自由を提供します。

RSGL は、重要な GUI 機能を軽量で汎用性の高いライブラリ内にカプセル化することで、開発者が技術的な複雑さと格闘するのではなく、創造性に集中できるようにします。

RSGLの背景

SDL と同様に、RSGL はユーザーの邪魔にならないように努めます。ただし、SDL とは異なり、RSGL はより最新化され、ユーザーのためにさらに多くのことを実行しようとしています。 RSGL と比較できるもう 1 つのライブラリは Raylib です。私は、RSGL の初期設計をすでに作成し終わるまで、Raylib について知りませんでした。表面的には、Raylib と RSGL は非常によく似た設計をしています。ただし、RSGL には異なる設計の選択肢があり、軽量であることに重点が置かれています。たとえば、RSGL の内部依存関係はすべて非常に軽量であり、ほとんどがそのように設計されています。 Raylib が使用する依存関係は、GLFW のように軽量になるように設計されていません。 RSGL は GLFW の代わりに RGFW を使用します。GLFW の .o 出力は約 280kb ですが、RGFW の出力は約 46kb です。それにも関わらず、Raylib と RSGL、および GUI ライブラリとして適切な選択肢と、どちらを使用するかは、好みや状況によって変わる可能性があります。

Raylib と RSGL のもう 1 つの類似点は、どちらも OpenGL 抽象化レイヤーを使用していることです。それぞれRLGLとRGL。ここでは違いについては詳しく説明しません。しかし、これらがそれぞれのライブラリをどのように強化するのかに注目することが非常に重要です。ソフトウェア作成者は、最新の OpenGL と従来の OpenGL の間で簡単にコンパイルできます。 RGL では、実行時にレガシー関数を使用してプログラムをレンダリングすることもできます。これにより、プログラムにフェイルセーフを持たせることができます。これは、RSGL がユーザーに利便性を提供するもう 1 つの方法です。

コードの使用

RSGL がどれほど素晴らしいかについては、もう十分です。ここに例を示しますので、RSGL が本当に賞賛に値するかどうかはご自身で判断してください。

#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);
}
ログイン後にコピー

コンパイル中:
ウィンドウ: gcc -lopengl32 -lshell32 -lgdi32
Linux: gcc -lGLX -lX11 -lm
macos : gcc -framework Foundation -framework AppKit -framework OpenGL -framework CoreVideo

注: これは非常に基本的な例です。リポジトリには、それほど基本的ではない例がたくさん含まれています。

興味のあるスポット

RSGL の全体的な機能を箇条書きで示します:

  • 外部依存関係はなく、必要なライブラリはすべて RSGL に含まれており、非常に軽量です
  • Windows、MacOS、Linux などの複数のプラットフォームをサポート
  • 複数のバージョンの OpenGL をサポート (実行時に切り替えることも可能)
  • 他の小さな軽量の依存関係を使用します
  • OpenGL 抽象化レイヤー: RGL (これも独自の単一ヘッダー ライブラリです)
  • stb_truetype.h および stb_image.h により、複数のフォントおよび画像形式をサポート
  • miniaudio.h により複数のオーディオ形式をサポート
  • 多くの例が含まれています
  • 非常に柔軟なライセンスを備えた無料のオープンソース

RSGLモジュール

RSGL_NO_WIDGETS (RSGL にウィジェット関数が含まれないようにします)

RSGL_NO_AUDIO (RSGL にオーディオ機能が含まれないようにします)

RSGL_NO_WINDOW - RSGL_window なし、代わりに RSGL_graphics が使用されます [これは RGFW 以外の別のウィンドウ マネージャーを使用するためです]

RSGL_NO_TEXT - テキストレンダリング関数は含まれません

RGFW_NO_WIDGETS - ウィジェットを含めません

RSGL_NO_AUDIO - オーディオ機能は含まれません

RSGL_NO_MINIAUDIO_IMPLEMENTATION -
に #define MINIAUDIO_IMPLEMENTATION を含めないでください このヘッダー (オーディオを使用するには、他の方法で miniaudio をリンクする必要があります)

RSGL_NO_SAVE_IMAGE - 画像を保存/ロードしません (これを使用する場合は RSGL_drawImage を使用しないでください)。

RSGL_drawImage はファイル名とテクスチャを保存してロードできるようにします
後で尋ねるとき。これにより、

が無効になります

RSGL-アーキテクチャ図

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

ライセンス

RSGL は libpng ライセンスを使用します。これは、このソフトウェアを自分で作成したと主張しない限り、RSGL を自由に使用でき、変更されたバージョンにそのようにマークを付け、ヘッダーに含まれるライセンスを保持できることを意味します。

最後のメモ

RSGL リポジトリは次の場所にあります:
https://github.com/ColleagueRiley/RSGL

以上がRSGL |モジュラーヘッダーのみのクロスプラットフォーム GUI ライブラリにより、GUI ソフトウェアを自分の方法で簡単に作成できます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート