#+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()
}