#+private package platform import "vendor:glfw" Window :: struct { handle: glfw.WindowHandle, backend: Windowing_Backend, } Windowing_Backend :: enum { Auto = 0, GLFW, XCB, Wayland, } window_create :: proc() -> ^Window { window := new(Window) glfw.Init() window.handle = glfw.CreateWindow(640, 480, "Tessel", nil, nil) window.backend = .GLFW glfw.MakeContextCurrent(window.handle) return window } window_destroy :: proc(window: ^Window) { glfw.DestroyWindow(window.handle) glfw.Terminate() free(window) } window_should_close :: proc(window: ^Window) -> bool { return bool(glfw.WindowShouldClose(window.handle)) } window_swap_buffers :: proc(window: ^Window) { glfw.SwapBuffers(window.handle) } window_poll_events :: proc(window: ^Window) { glfw.PollEvents() }