Uma biblioteca de abstração de janelas de Janela de Janela de Janelas muito simples para uso para criar bibliotecas gráficas ou programas gráficos simples. Escrito em puro C99.
O RGFW é uma estrutura de abstração de janela de um único cabeçalho de várias plataformas gratuito para a criação de bibliotecas gráficas ou programas gráficos simples. Deve ser usado como uma biblioteca alternativa muito pequena e flexível para o GLFW.
O back -end da janela suporta XLIB (UNIX), Cocoas (MacOS), WebAm (EMSCRIPTEN) e WINAPI (testado no Windows XP , 10 e 11, e Reactos)
Windows 95 e 98 também foram testados com RGFW, embora os resultados sejam duvidosos
Wayland: para compilar Wayland Add (rgfw_wayland = 1). O apoio de Wayland é muito experimental e quebrado.
O back -end de gráficos suporta o OpenGL (EGL, Software, Osmesa, Gles), Vulkan, DirectX, Metal e Software Rendering Buffers.
O RGFW foi projetado como um back -end para o RSGL, mas pode ser usado independente ou para outras bibliotecas, como o Raylib, que o usa como um back -end alternativo opcional.
RGFW é multi-paradigma,
Por padrão, o RGFW usa um sistema de eventos flexíveis, semelhante ao do SDL, no entanto, você pode usar retornos de chamada se preferir esse método.
Esta biblioteca
Esta biblioteca não
#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
Você pode encontrar mais exemplos aqui ou executá -lo em seu navegador com emscriptten
Uma lista de bibliotecas GUI que podem ser usadas com RGFW pode ser encontrada no Wiki RGFW aqui
Há muita documentação no cabeçalho, mas mais documentação pode ser encontrada em https://colleagueriley.github.io/rgfw/docs/index.html Se você deseja criar a documentação, também há um arquivo de doxygen anexado.
Uma lista de ligações pode ser encontrada no Wiki RGFW aqui
Uma lista de projetos que usam RGFW pode ser encontrada no Wiki RGFW aqui
Há uma página do Wiki RGFW sobre coisas que você pode fazer se quiser apoiar o desenvolvimento do RGFW aqui.
Uma comparação de RGFW e GLFW pode ser encontrada no wiki
O RGFW usa a licença ZLIB/LIBPNG, isso significa que você pode usar o RGFW livremente, desde que não afirme que escreveu esse software, Mark Altered Versões como tal e mantenha a licença incluída no cabeçalho.
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.