RSGL 是一个易于使用的模块化跨平台 GUI 库,用于轻松创建 GUI 应用程序和游戏。它将底层 GUI 库的自由度与现代 C 技术相结合,提供简单性和便利性。它的主要特点是内置的轻量级依赖、灵活性和跨平台支持。它目前支持 Linux、Windows 和 MacOS,拥有 zlib 许可证,并且由于使用 STB 和 miniaudio,因此支持多种数据格式。
https://github.com/ColleagueRiley/RSGL
RSGL 是 Riley 简单 GUI 库的缩写,是一款旨在简化应用程序和游戏的图形用户界面 (GUI) 开发的工具。 RSGL 的核心是模块化和跨平台的解决方案,为开发人员提供轻松创建 GUI 的自由,同时克服 GUI 开发中遇到的常见挑战。
通过将基本的 GUI 功能封装在轻量级多功能库中,RSGL 使开发人员能够专注于创造力,而不是与技术复杂性作斗争。
就像 SDL RSGL 试图不妨碍用户一样。但与 SDL 不同的是,RSGL 试图变得更加现代化,为用户做更多的事情。另一个可以与 RSGL 进行比较的库是 Raylib。直到我创建了 RSGL 的初始设计之后,我才知道 Raylib。从表面上看,Raylib 和 RSGL 的设计非常相似。尽管如此,RSGL 有不同的设计选择,并且更加注重轻量化。例如,RSGL 的所有内部依赖项都是非常轻量级的,并且大多数都是如此设计的。虽然 Raylib 使用的依赖项并不是轻量级的,例如 GLFW。 RSGL 使用 RGFW 而不是 GLFW,GLFW 的 .o 输出约为 280kb,而 RGFW 的输出约为 46kb。尽管如此,Raylib 和 RSGL 以及 GUI 库都是不错的选择,您选择使用的库可能会根据您的品味和环境而改变。
Raylib 和 RSGL 的另一个相似之处是它们都使用 OpenGL 抽象层。分别为 RLGL 和 RGL。我不会在这里详细讨论这些差异。但值得注意的是,它们是如何使各自的库变得更加强大的。软件创建者可以轻松地在现代和传统 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); }
编译:
Windows:gcc -lopengl32 -lshell32 -lgdi32
Linux: gcc -lGLX -lX11 -lm
macos : gcc -framework Foundation -framework AppKit -framework OpenGL -framework CoreVideo
注意:这是一个非常基本的示例,存储库中包含很多不太基本的示例。
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_IMPLMENTATION -
中没有 #define MINIAUDIO_IMPLMENTATION
此标头(您必须以其他方式链接 miniaudio 才能使用音频)
RSGL_NO_SAVE_IMAGE - 不保存/加载图像(如果使用此功能,请勿使用 RSGL_drawImage),
RSGL_drawImage 保存文件名+纹理,以便加载它
当你稍后询问时。这会禁用
RSGL 使用 libpng 许可证,这意味着您可以自由使用 RSGL,只要您不声称您编写了该软件,标记更改版本并将许可证包含在标头中。
RSGL 存储库可以在以下位置找到:
https://github.com/ColleagueRiley/RSGL
以上是RSGL |模块化的仅标头跨平台 GUI 库,可按照您的方式轻松创建 GUI 软件!的详细内容。更多信息请关注PHP中文网其他相关文章!