summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2024-02-18 11:39:17 +0000
committer0scar <qgt268@alumni.ku.dk>2024-02-18 11:55:26 +0000
commitbfe5cc29b1f31fe4921264a96a58607c836ee516 (patch)
treee0afd73c5825c84b97ed126d4862e671b4c96f56 /src
parent82fb64a354a9ce91d85db7e3d9fd5fdfb8f7c9ed (diff)
Add direction to camera
Diffstat (limited to 'src')
-rw-r--r--src/core/src/loop.c1
-rw-r--r--src/rendering/include/engine/rendering/rendering.h4
-rw-r--r--src/rendering/src/rendering.c5
3 files changed, 8 insertions, 2 deletions
diff --git a/src/core/src/loop.c b/src/core/src/loop.c
index 2657e9f..534acce 100644
--- a/src/core/src/loop.c
+++ b/src/core/src/loop.c
@@ -38,6 +38,7 @@ Platform* GLOBAL_PLATFORM = NULL;
static Camera default_camera = {
.pos = {3, 0, 0},
+ .dir = {1, 1, 1},
};
input_callback_t* callbacks[128];
diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h
index e1232d5..87de0b2 100644
--- a/src/rendering/include/engine/rendering/rendering.h
+++ b/src/rendering/include/engine/rendering/rendering.h
@@ -72,6 +72,10 @@ typedef enum {
typedef struct {
/* Position of the camera in world-space. */
vec3 pos;
+
+ /* The viewing direction of the camera, relative to the camera. */
+ vec3 dir;
+
/* Perspective matrix. Initialize with r_perspective_ortho or r_perspective. */
/* Alternatively, use `glm_perspective` or `glm_ortho`. */
mat4 per;
diff --git a/src/rendering/src/rendering.c b/src/rendering/src/rendering.c
index 845cd70..aa9306e 100644
--- a/src/rendering/src/rendering.c
+++ b/src/rendering/src/rendering.c
@@ -36,8 +36,9 @@ void render_present(Window* w) {
const f32 ratio = (float)w->windowsize[0] / (float)w->windowsize[1];
mat4 view; // view
- vec3 angle = {1, 2.0, 1};
- glm_vec3_sub(c.pos, angle, angle);
+ vec3 angle; // viewing angle / direction of the camera
+
+ glm_vec3_sub(c.pos, c.dir, angle);
glm_lookat(c.pos, angle, GLM_YUP, view);
for (i32 i = 0; i < drawcall_len; i++) {