summaryrefslogtreecommitdiff
path: root/main.zig
blob: 692bdc1472c11ee75700aca5060086a543ec5f04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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);
}