From 60bd06ced6de9f1272e31da323996db2d8b8a531 Mon Sep 17 00:00:00 2001 From: pryazha Date: Thu, 20 Feb 2025 15:10:59 +0500 Subject: initial --- src/game/game.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/game/game.c (limited to 'src/game/game.c') diff --git a/src/game/game.c b/src/game/game.c new file mode 100644 index 0000000..25c71fa --- /dev/null +++ b/src/game/game.c @@ -0,0 +1,41 @@ +void game_init(State *state) +{ + U64 persistent_size = Megabytes(1); + state->persistent_arena = arena_alloc(persistent_size); + state->shader = create_shader_program(str8lit("shaders/default.vert"), + str8lit("shaders/default.frag")); + Vertex verts[] = { + vertex(v3(-0.5f, -0.5f, 0.0f)), + vertex(v3(0.0f, 0.5f, 0.0f)), + vertex(v3(0.5f, -0.5f, 0.0f)) + }; + + U32 indices[] = { 0, 1, 2 }; + + state->the_mesh = mesh(state->persistent_arena, verts, ArrayCount(verts), indices, ArrayCount(indices)); +} + +void game_update_and_render(State *state, Input *input) +{ + /* NOTE(pryazha): Update */ + if (key_is_pressed(input->exit)) + input->is_running = 0; + + /* NOTE(pryazha): Render */ + glClearColor(0.15f, 0.15f, 0.15f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glUseProgram(state->shader); + F32 angle = 20.0f*state->t; + Mat4 model = mat4rotate(MAT4_IDENTITY, v3(0.0f, 0.0f, angle)); + shader_set_mat4fv(state->shader, "model", model); + mesh_draw(*state->the_mesh); + glUseProgram(0); + + state->t += input->dt; +} + +void game_clear(State *state) +{ + arena_release(state->persistent_arena); +} -- cgit v1.2.3-70-g09d2