summaryrefslogtreecommitdiff
path: root/source/game/game.cpp
diff options
context:
space:
mode:
authortalha <talha@talhaamir.xyz>2025-11-27 13:18:57 +0500
committertalha <talha@talhaamir.xyz>2025-11-27 13:18:57 +0500
commit0b3d69976819219e71350b6a988d1704fd5f0746 (patch)
tree3511564cb2cb3b10697dc997260479a14540d706 /source/game/game.cpp
Added files to git.HEADmain
Current State: - hot reloading - math library (calcify) - triangle rendering (unbatched) - orthographic projection (no camera) - layer isolation setup (platform vs game)
Diffstat (limited to 'source/game/game.cpp')
-rw-r--r--source/game/game.cpp56
1 files changed, 56 insertions, 0 deletions
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);
+}