diff options
| author | onelin <oscar@nelin.dk> | 2026-02-18 22:34:32 +0000 |
|---|---|---|
| committer | onelin <oscar@nelin.dk> | 2026-02-18 22:41:30 +0000 |
| commit | 337b98e2f4ee16a7db8b0f3361bd6c3081ca4d00 (patch) | |
| tree | 092dc8abb4d59539669fc1a83ea06e35aaadc394 | |
| parent | e5548ded0725bcfb5a5af1a1e7650cd15d9b0934 (diff) | |
Add window as void* to camera resize callback
| -rw-r--r-- | src/include/daw/rendering.h | 6 | ||||
| -rw-r--r-- | src/include/daw/window.h | 2 | ||||
| -rw-r--r-- | src/rendering.c | 4 | ||||
| -rw-r--r-- | src/window.c | 4 |
4 files changed, 9 insertions, 7 deletions
diff --git a/src/include/daw/rendering.h b/src/include/daw/rendering.h index 640f104..046141e 100644 --- a/src/include/daw/rendering.h +++ b/src/include/daw/rendering.h @@ -319,7 +319,7 @@ typedef struct { // framebuffer_size_callback is not null, otherwise called with // the new window size. // Set to NULL to skip changing the camera size/perspective. - void (**camera_reset_callback)(Camera*, void *state, ivec2 src); + void (**camera_reset_callback)(void* window, Camera*, void *state, ivec2 src); // glTexture and glRenderBuffer // Currently, each buffer must be either a texture or a (depth and/or stencil) @@ -401,8 +401,8 @@ void r_clear_buffer(void *restrict context, RenderTargets *restrict t, u32 frame //static void r_create_renderbuffers(GladGLContext* restrict ctx, u32* restrict renderbuffer_array, u32* restrict renderbuffer_types, ivec2* restrict renderbuffer_sizes, usize num_targets); // Callbacks used for framebuffers in rendertargets -void framebuffer_size_callback_default(ivec3* dst,ivec2 src); -void camera_reset_callback_default(Camera* dst, void* state, ivec2 src); +void framebuffer_size_callback_default(ivec3* dst, ivec2 src); +void camera_reset_callback_default(void* window, Camera* dst, void* state, ivec2 src); #ifdef __cplusplus } diff --git a/src/include/daw/window.h b/src/include/daw/window.h index 99f6b6c..9e31368 100644 --- a/src/include/daw/window.h +++ b/src/include/daw/window.h @@ -118,7 +118,7 @@ void window_init_renderstack(Window *restrict w, void get_mousepos(double *x, double *y); void window_get_size(ivec2* dst); -void window_reset_cameras(Window* w, void* state, RenderTargets* restrict targets); +void window_reset_cameras(Window *restrict w, void *restrict state, RenderTargets *restrict targets); #ifdef __cplusplus } diff --git a/src/rendering.c b/src/rendering.c index 9dfc89c..c4d71d8 100644 --- a/src/rendering.c +++ b/src/rendering.c @@ -2,6 +2,8 @@ #include <glad/gl.h> #include <GLFW/glfw3.h> +// Important wrt. what direction we're favoring when readjusting FOV/cameras. +// Also makes it more vulkan/metal friendly according to docs? #define CGLM_FORCE_DEPTH_ZERO_TO_ONE #include <cglm/cam.h> #include <cglm/vec2.h> @@ -986,7 +988,7 @@ void framebuffer_size_callback_default(ivec3* dst, ivec2 src) { glm_ivec2_copy(src, *dst); } -void camera_reset_callback_default(Camera* dst, void* state, ivec2 src) { +void camera_reset_callback_default(void* _, Camera* dst, void* state, ivec2 src) { r_reset_camera(dst, src); } diff --git a/src/window.c b/src/window.c index a968eea..2599f53 100644 --- a/src/window.c +++ b/src/window.c @@ -68,7 +68,7 @@ Window* Window_new(const struct Platform* p, const char *restrict title, Window_ } -void window_reset_cameras(Window* w, void* state, RenderTargets* restrict targets) { +void window_reset_cameras(Window *restrict w, void *restrict state, RenderTargets *restrict targets) { usize b_ofst = 0; for (usize i = 0; i < targets->framebuffer_len; i++) { ivec3 newsz; @@ -121,7 +121,7 @@ void window_reset_cameras(Window* w, void* state, RenderTargets* restrict target for (usize i = 0; i < targets->framebuffer_len; i++) { // Reset camera using callback (if any) if (targets->camera_reset_callback[i] != NULL) { - targets->camera_reset_callback[i](targets->cam[i], state, targets->framebuffer_parameters[i].dimensions); + targets->camera_reset_callback[i](w, targets->cam[i], state, targets->framebuffer_parameters[i].dimensions); } } } |
