Harbor

branch main
showing the latest snapshot on main
main.odin 1.2 KB · Plain text
gpu/examples/shapes/main.odin 0644 Raw
package main

import gpu "../.."
import app "../../app"

main :: proc() {
	state, ok := app.init_window(800, 600, "GPU - 2D Shapes")
	if !ok {
		return
	}
	defer app.shutdown(&state)

	for !app.window_should_close(&state) {
		frame := app.begin_frame(&state, gpu.CORNFLOWER_BLUE)

		_ = gpu.draw_rect(&frame, {x = 50, y = 50, width = 200, height = 100, color = gpu.RED})
		_ = gpu.draw_rect(&frame, {x = 300, y = 50, width = 150, height = 150, color = gpu.GREEN})
		_ = gpu.draw_rect(&frame, {x = 500, y = 80, width = 250, height = 80, color = gpu.BLUE})

		_ = gpu.draw_circle_frame(&frame, {cx = 150, cy = 350, radius = 60, color = gpu.YELLOW})
		_ = gpu.draw_circle_frame(&frame, {cx = 400, cy = 350, radius = 80, color = gpu.PURPLE})
		_ = gpu.draw_circle_frame(&frame, {cx = 600, cy = 350, radius = 40, color = gpu.CYAN})

		_ = gpu.draw_line_frame(&frame, {x0 = 50, y0 = 500, x1 = 750, y1 = 500, color = gpu.WHITE})
		_ = gpu.draw_line_frame(&frame, {x0 = 50, y0 = 480, x1 = 750, y1 = 520, color = gpu.ORANGE})
		_ = gpu.draw_line_frame(&frame, {x0 = 400, y0 = 250, x1 = 400, y1 = 550, color = gpu.MAGENTA})

		_ = app.submit_frame(&state, &frame)

		if app.is_key_pressed(&state, .Escape) {
			break
		}
	}
}