diff options
| -rw-r--r-- | src/core/src/loop.c | 1 | ||||
| -rw-r--r-- | src/rendering/include/engine/rendering/rendering.h | 4 | ||||
| -rw-r--r-- | src/rendering/src/rendering.c | 5 |
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++) { |
