diff options
| author | onelin <oscar@nelin.dk> | 2025-03-21 12:32:59 +0000 |
|---|---|---|
| committer | onelin <oscar@nelin.dk> | 2025-03-21 12:39:20 +0000 |
| commit | fcd22d1fd9d99a73eefa984548adf86189a0060b (patch) | |
| tree | 63bdca43e83314ed406b2b5c1ccef10c48e0c1f4 /src/rendering | |
| parent | 4e3de52226b2a247ea5da6240ae5e58a4cf95018 (diff) | |
Reset the camera before first iteration
Diffstat (limited to 'src/rendering')
| -rw-r--r-- | src/rendering/include/engine/rendering/rendering.h | 1 | ||||
| -rw-r--r-- | src/rendering/include/engine/rendering/window.h | 1 | ||||
| -rw-r--r-- | src/rendering/src/rendering.c | 10 | ||||
| -rw-r--r-- | src/rendering/src/window.c | 16 |
4 files changed, 20 insertions, 8 deletions
diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h index b984176..abfb8d9 100644 --- a/src/rendering/include/engine/rendering/rendering.h +++ b/src/rendering/include/engine/rendering/rendering.h @@ -189,6 +189,7 @@ void r_perspective(f32 fov, Camera *c); void r_perspective_ortho(f32 sz, Camera *c); void r_set_camera(Camera* c); +void r_reset_camera(Camera* c); //void window_size_callback(GLFWwindow* window, i32 width, i32 height); diff --git a/src/rendering/include/engine/rendering/window.h b/src/rendering/include/engine/rendering/window.h index 561afd6..e5d3528 100644 --- a/src/rendering/include/engine/rendering/window.h +++ b/src/rendering/include/engine/rendering/window.h @@ -39,6 +39,7 @@ typedef struct { // Window function Window* init_window_glfw(const char* windowtitle, ivec2 windowsize, const u32 flags); void destroy_window(Window* w); +void window_resize(Window* window, int width, int height); // Renderer intializer(s) void init_render_opengl(Window* w, const u32 flags); diff --git a/src/rendering/src/rendering.c b/src/rendering/src/rendering.c index a938c78..c2f8ab2 100644 --- a/src/rendering/src/rendering.c +++ b/src/rendering/src/rendering.c @@ -352,6 +352,16 @@ void r_set_camera(Camera* c) { GLOBAL_PLATFORM->cam = c; } + +void r_reset_camera(Camera* c) { + if (c->type == Camera_Perspective) { + r_perspective(c->parameters.perspective.fov, c); + } + else if (c->type == Camera_Orthogonal) { + r_perspective_ortho(c->parameters.orthogonal.sz, c); + } +} + void engine_draw_sprite(Sprite* s, v2_i32* pos, f32 scale) { if (drawcall_len + 1 >= drawcall_limit) return; #ifdef _DEBUG diff --git a/src/rendering/src/window.c b/src/rendering/src/window.c index f27640a..b755035 100644 --- a/src/rendering/src/window.c +++ b/src/rendering/src/window.c @@ -40,7 +40,7 @@ void window_resize_callback(GLFWwindow* window, int width, int height) { gl->Finish(); } -void window_size_callback(GLFWwindow* window, int width, int height) { +void framebuffer_resize_callback(GLFWwindow* window, int width, int height) { (void)window; const GladGLContext* gl = GLOBAL_PLATFORM->window->context; Camera* c = GLOBAL_PLATFORM->cam; @@ -48,13 +48,13 @@ void window_size_callback(GLFWwindow* window, int width, int height) { GLOBAL_PLATFORM->window->windowsize[0] = width; GLOBAL_PLATFORM->window->windowsize[1] = height; - if (c->type == Camera_Perspective) { - r_perspective(c->parameters.perspective.fov, c); - } - else if (c->type == Camera_Orthogonal) { - r_perspective_ortho(c->parameters.orthogonal.sz, c); - } + r_reset_camera(c); +} +void window_resize(Window* window, int width, int height) { + /* TODO: Handle different frameworks */ + window_resize_callback(window->window, width, height); + framebuffer_resize_callback(window->window, width, height); } /* This is very glfw specific */ @@ -154,7 +154,7 @@ Window* init_window_glfw( printf("ok\n"); // Setup callbacks - glfwSetFramebufferSizeCallback(window, window_size_callback); + glfwSetFramebufferSizeCallback(window, framebuffer_resize_callback); glfwSetWindowSizeCallback(window, window_resize_callback); glfwSetKeyCallback(window, (GLFWkeyfun)key_callback); |
