const std = @import("std"); const rgfw = @import("rgfw"); const rsgl = @import("rsgl"); fn keyfunc (event: [*c]const rgfw.RGFW_event) callconv(.c) void { if(event.*.key.value == rgfw.RGFW_keyEscape) { rgfw.RGFW_window_setShouldClose(event.*.common.win, 1); } } pub fn main() !void { var hints: *rgfw.RGFW_glHints = rgfw.RGFW_getGlobalHints_OpenGL(); hints.major = 3; hints.minor = 3; hints.profile = rgfw.RGFW_glCompatibility; rgfw.RGFW_setGlobalHints_OpenGL(hints); const win: ?*rgfw.RGFW_window = rgfw.RGFW_createWindow("a window", 0, 0, 800, 600, rgfw.RGFW_windowCenter | rgfw.RGFW_windowNoResize | rgfw.RGFW_windowOpenGL); _ = rgfw.RGFW_setEventCallback(rgfw.RGFW_keyPressed, keyfunc); const renderer: *rsgl.RSGL_renderer = rsgl.RSGL_renderer_init(rsgl.RSGL_GL_rendererProc(), @constCast(&rgfw.RGFW_getProcAddress_OpenGL)); rsgl.RSGL_renderer_viewport(renderer, rsgl.RSGL_RECT(0, 0, 500, 500)); rsgl.RSGL_renderer_updateSize(renderer, 500, 500); while(rgfw.RGFW_FALSE == rgfw.RGFW_window_shouldClose(win)) { rgfw.RGFW_pollEvents(); if(rgfw.RGFW_TRUE == rgfw.RGFW_isMousePressed(rgfw.RGFW_mouseLeft)) { std.debug.print("You clicked\n", .{}); } if(rgfw.RGFW_TRUE == rgfw.RGFW_isMousePressed(rgfw.RGFW_mouseRight)) { std.debug.print("The right mouse button was clicked\n", .{}); } rsgl.RSGL_renderer_clear(renderer, rsgl.RSGL_RGB(10, 50, 100)); rsgl.RSGL_renderer_setColor(renderer, rsgl.RSGL_RGB(255, 0, 0)); _ = rsgl.RSGL_drawRect(renderer, rsgl.RSGL_RECT(200, 200, 200, 200)); rsgl.RSGL_renderer_render(renderer); rgfw.RGFW_window_swapBuffers_OpenGL(win); } rgfw.RGFW_window_close(win); }