>백엔드 개발 >C++ >RSGL | 원하는 방식으로 GUI 소프트웨어를 쉽게 만들 수 있는 모듈식 헤더 전용 크로스 플랫폼 GUI 라이브러리!

RSGL | 원하는 방식으로 GUI 소프트웨어를 쉽게 만들 수 있는 모듈식 헤더 전용 크로스 플랫폼 GUI 라이브러리!

WBOY
WBOY원래의
2024-07-16 21:31:11804검색

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과 비교할 수 있는 또 다른 라이브러리는 Raylib입니다. 나는 RSGL의 초기 디자인을 이미 만든 이후까지 Raylib에 대해 알지 못했습니다. 표면적으로 Raylib과 RSGL은 디자인이 매우 비슷합니다. 하지만 RSGL은 다양한 디자인 선택을 갖고 있으며 경량화에 더 중점을 두고 있습니다. 예를 들어 RSGL의 모든 내부 종속성은 매우 가볍고 대부분 그렇게 설계되었습니다. Raylib가 사용하는 종속성은 GLFW와 같이 경량으로 설계되지 않았습니다. RSGL은 GLFW 대신 RGFW를 사용합니다. GLFW의 .o 출력은 ~280kb이고 RGFW의 출력은 ~46kb입니다. 그럼에도 불구하고 Raylib와 RSGL, GUI 라이브러리에 대한 좋은 선택과 사용하기로 선택한 라이브러리는 취향과 상황에 따라 달라질 수 있습니다.

Raylib과 RSGL의 또 다른 유사점은 둘 다 OpenGL 추상화 레이어를 사용한다는 것입니다. 각각 RLGL과 RGL. 여기서는 차이점에 대해 너무 자세히 설명하지 않겠습니다. 그러나 이 두 가지가 어떻게 각각의 라이브러리를 더욱 강력하게 만드는지 주목하는 것이 매우 중요합니다. 소프트웨어 제작자는 최신 OpenGL과 레거시 OpenGL 간에 쉽게 컴파일할 수 있습니다. RGL을 사용하면 프로그램이 런타임 중에 레거시 기능을 사용하여 렌더링할 수도 있습니다. 이를 통해 프로그램은 RSGL이 사용자에게 편의를 제공하는 또 다른 방법인 오류 방지 기능을 가질 수 있습니다.

코드 사용

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
리눅스: 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이 없습니다. 이 헤더(오디오를 사용하려면 미니오디오를 다른 방법으로 연결해야 함)

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.