From 0b3d69976819219e71350b6a988d1704fd5f0746 Mon Sep 17 00:00:00 2001 From: talha Date: Thu, 27 Nov 2025 13:18:57 +0500 Subject: Added files to git. Current State: - hot reloading - math library (calcify) - triangle rendering (unbatched) - orthographic projection (no camera) - layer isolation setup (platform vs game) --- source/game/game.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 source/game/game.cpp (limited to 'source/game/game.cpp') diff --git a/source/game/game.cpp b/source/game/game.cpp new file mode 100644 index 0000000..337fe11 --- /dev/null +++ b/source/game/game.cpp @@ -0,0 +1,56 @@ +#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); +} -- cgit v1.2.3