package main import "core:fmt" import "vendor:sdl2" WIDTH :: 1600 HEIGHT :: 900 Game :: struct { render: ^sdl2.Renderer, time: f64, dt: f64, } get_time :: proc() -> f64 { return f64(sdl2.GetPerformanceCounter()) * 1000 / f64(sdl2.GetPerformanceFrequency()) } main :: proc() { assert(sdl2.Init(sdl2.INIT_VIDEO) == 0, sdl2.GetErrorString()) defer sdl2.Quit() window := sdl2.CreateWindow("Game", 0, 0, 1600, 900, sdl2.WINDOW_SHOWN) assert(window != nil, sdl2.GetErrorString()) defer sdl2.DestroyWindow(window) render := sdl2.CreateRenderer(window, -1, sdl2.RENDERER_ACCELERATED) assert(render != nil, sdl2.GetErrorString()) tickrate := 240.0 ticktime := 1000.0 / tickrate game := Game { render = render, time = get_time(), dt = ticktime, } for { event: sdl2.Event for sdl2.PollEvent(&event) { #partial switch event.type { case .QUIT: return } } sdl2.SetRenderDrawColor(render, 0, 0, 0, 0) sdl2.RenderClear(render) sdl2.RenderPresent(render) } }