fumarole/main.odin

55 lines
1,015 B
Odin
Raw Normal View History

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