#include "game.h" void game_setup(GameState *state) { glUseProgram(state->triangle_sp); Mat4 projection = calcify_ortho4m(0.0f, state->width, 0.0f, state->height, 0.1f, 10.0f); i32 triangle_proj_loc = glGetUniformLocation(state->triangle_sp, "Projection"); glUniformMatrix4fv(triangle_proj_loc, 1, 0, projection.buffer); glUseProgram(0); }; void game_handle_event(GameState *state, GameEventType type) { switch (type) { case GAME_EVENT_RESIZE: { glUseProgram(state->triangle_sp); glViewport(0, 0, state->width, state->height); Mat4 projection = calcify_ortho4m(0.0f, state->width, 0.0f, state->height, 1.0f, 10.0f); i32 triangle_proj_loc = glGetUniformLocation(state->triangle_sp, "Projection"); glUniformMatrix4fv(triangle_proj_loc, 1, 0, projection.buffer); glUseProgram(0); } break; default: break; } } void game_update_and_render(GameState *state) { glClearColor(0.1f, 0.1f, 0.1f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(state->triangle_sp); Mat4 model = calcify_ident4m(); Mat4 scale = calcify_scaling_matrix4m(105.0f, 95.0f); model = calcify_multiply4m(scale, model); Mat4 pos = calcify_translation_matrix4m(350.0f, 950.0f, -1.0f); model = calcify_multiply4m(pos, model); i32 model_loc = glGetUniformLocation(state->triangle_sp, "Model"); glUniformMatrix4fv( model_loc, 1, 0, model.buffer ); Vec3 Color = (Vec3){.r=0.4,.g=0.9,.b=0.7}; glUniform3f(glGetUniformLocation(state->triangle_sp, "Color"), Color.r, Color.g, Color.b); glBindVertexArray(state->triangle_vao); glDrawArrays(GL_TRIANGLES, 0, 3); glBindVertexArray(0); }