Una biblioteca de abstracción de ventana muy fácil de usar para la plataforma multiplataforma para crear bibliotecas gráficas o programas gráficos simples. Escrito en puro C99.
RGFW es un marco de abstracción de ventana muy simple de uso de una sola plataforma gratuita para crear bibliotecas gráficas o programas gráficos simples. Está destinado a usarse como una biblioteca alternativa muy pequeña y flexible para GLFW.
El back -end de la ventana admite XLIB (UNIX), Cocoas (MacOS), Webasm (Emscripten) y Winapi (probado en Windows XP , 10 y 11, y Reactos)
Windows 95 y 98 también se han probado con RGFW, aunque los resultados son dudosos
Wayland: para compilar Wayland ADD (RGFW_WAYLAND = 1). El apoyo de Wayland es muy experimental y roto.
El backend de gráficos admite OpenGL (EGL, Software, OSMESA, GLES), Vulkan, DirectX, Metal y Buffers de representación de software.
RGFW fue diseñado como un backend para RSGL, pero se puede usar independiente o para otras bibliotecas, como Raylib, que lo usa como un backend alternativo opcional.
RGFW es multiparadigma,
Por defecto, RGFW utiliza un sistema de eventos flexible, similar al de SDL, sin embargo, puede usar devoluciones de llamada si prefiere ese método.
Esta biblioteca
Esta biblioteca no
#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
Puede encontrar más ejemplos aquí o ejecutarlo en su navegador con Emscripten
Se puede encontrar una lista de bibliotecas de GUI que se pueden usar con RGFW en el Wiki RGFW aquí
Hay una gran cantidad de documentación en Header, pero se puede encontrar más documentación en https://colleagueriley.github.io/rgfw/docs/index.html Si desea construir la documentación usted mismo, también hay un archivo doxygen adjunto.
Se puede encontrar una lista de enlaces en el wiki RGFW aquí
Se puede encontrar una lista de proyectos que usan RGFW en el Wiki RGFW aquí
Hay una página Wiki RGFW sobre cosas que puede hacer si desea apoyar el desarrollo de RGFW aquí.
Se puede encontrar una comparación de RGFW y GLFW en la wiki
RGFW utiliza la licencia ZLIB/libpng, esto significa que puede usar RGFW libremente siempre que no afirme que escribió este software, Mark Versiones alteradas como tal y mantener la licencia incluida con el encabezado.
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.