Крестоплатформенная легкая одногодие очень простой в использовании библиотеки абстракции окон для создания графических библиотек или простых графических программ. Написано в чистом C99.
RGFW представляет собой бесплатную многоплатформенную однополосную структуру очень простых в использовании структуры абстракции окна для создания графических библиотек или простых графических программ. Он предназначен для использования в качестве очень маленькой и гибкой альтернативной библиотеки для GLFW.
Бэкэнд окна поддерживает XLIB (UNIX), CocoAs (MacOS), Webasm (Emscripten) и Winapi (протестировано на Windows XP , 10 и 11 и Reactos)
Windows 95 и 98 также были протестированы с помощью RGFW, хотя результаты являются Iffy
Уэйленд: Компилировать Уэйленд добавить (rgfw_wayland = 1). Поддержка Уэйленда очень экспериментальная и сломанная.
Бэкэнд Graphics поддерживает OpenGL (EGL, Software, OSMESA, GLES), вулкан, DirectX, металлические и программные рендеринги.
RGFW был разработан в качестве бэкэнда для RSGL, но он может использоваться автономным или для других библиотек, таких как Raylib, который использует его в качестве дополнительного альтернативного бэкэнда.
RGFW-многопарадигма,
По умолчанию RGFW использует гибкую систему событий, аналогичную системе SDL, однако вы можете использовать обратные вызовы, если вы предпочитаете этот метод.
Эта библиотека
Эта библиотека не
#define RGFW_IMPLEMENTATION
#include "RGFW.h"
void keyfunc ( RGFW_window * win , u32 keycode , char keyName [ 16 ], u8 lockState , u8 pressed ) {
if ( keycode == RGFW_Escape && pressed ) {
RGFW_window_setShouldClose ( win );
}
}
int main () {
RGFW_window * win = RGFW_createWindow ( "a window" , RGFW_RECT ( 0 , 0 , 800 , 600 ), ( u16 )( RGFW_CENTER | RGFW_NO_RESIZE ));
RGFW_setKeyCallback ( keyfunc ); // you can use callbacks like this if you want
while ( RGFW_window_shouldClose ( win ) == RGFW_FALSE ) {
while ( RGFW_window_checkEvent ( win )) { // or RGFW_window_checkEvents(); if you only want callbacks
// you can either check the current event yourself
if ( win -> event . type == RGFW_mouseButtonPressed && win -> event . button == RGFW_mouseLeft ) {
printf ( "You clicked at x: %d, y: %dn" , win -> event . point . x , win -> event . point . y );
}
// or use the existing functions
if ( RGFW_isMousePressed ( win , RGFW_mouseRight )) {
printf ( "The right mouse button was clicked at x: %d, y: %dn" , win -> event . point . x , win -> event . point . y );
}
}
glClearColor ( 0.1f , 0.1f , 0.1f , 1.0f );
glClear ( GL_COLOR_BUFFER_BIT );
// You can use modern OpenGL techniques, but this method is more straightforward for drawing just one triangle.
glBegin ( GL_TRIANGLES );
glColor3f ( 1 , 0 , 0 ); glVertex2f ( -0.6 , -0.75 );
glColor3f ( 0 , 1 , 0 ); glVertex2f ( 0.6 , -0.75 );
glColor3f ( 0 , 0 , 1 ); glVertex2f ( 0 , 0.75 );
glEnd ();
RGFW_window_swapBuffers ( win );
}
RGFW_window_close ( win );
return 0 ;
}linux : gcc main.c -lX11 -lGL -lXrandr -lm
windows : gcc main.c -lopengl32 -lshell32 -lgdi32 -lwinmm -lm
macos : gcc main.c -framework Foundation -framework AppKit -framework OpenGL -framework CoreVideo -lm
Вы можете найти здесь больше примеров или запустить его в браузере с Emscripten
Список библиотек GUI, которые можно использовать с RGFW, можно найти на вики RGFW здесь
Существует много документации в заголовке, но можно найти больше документации по адресу https://colleageeriley.github.io/rgfw/docs/index.html, если вы хотите создать документацию самостоятельно, есть также файл доксигена.
Здесь можно найти список привязков
Список проектов, которые используют RGFW, можно найти на вики RGFW здесь
Есть страница вики RGFW о вещах, которые вы можете сделать, если вы хотите поддержать разработку RGFW здесь.
Сравнение RGFW и GLFW можно найти на вики
RGFW использует лицензию Zlib/Libpng, это означает, что вы можете свободно использовать RGFW, если вы не утверждаете, что написали это программное обеспечение, Mark измененные версии как таковые и сохранить лицензию в заголовке.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.