From 337b98e2f4ee16a7db8b0f3361bd6c3081ca4d00 Mon Sep 17 00:00:00 2001 From: onelin Date: Wed, 18 Feb 2026 23:34:32 +0100 Subject: Add window as void* to camera resize callback --- src/include/daw/rendering.h | 6 +++--- src/include/daw/window.h | 2 +- src/rendering.c | 4 +++- src/window.c | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) (limited to 'src') 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 #include +// 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 #include @@ -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); } } } -- cgit v1.3