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); }