From ddcfb5d3827a6df6357dca7b29def5aca3a4fcd2 Mon Sep 17 00:00:00 2001 From: onelin Date: Wed, 17 Dec 2025 14:19:23 +0100 Subject: Setup/reset cameras --- src/daw.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'src/daw.c') diff --git a/src/daw.c b/src/daw.c index 2659f3b..56577b9 100644 --- a/src/daw.c +++ b/src/daw.c @@ -112,7 +112,6 @@ Instance* engine_init(const char* windowtitle, i32 windowWidth, i32 windowHeight /* initialize resources */ Resources* resources = calloc(1, sizeof(Resources)); - // TODO: Initialize them :) w = Window_new(&Platform_GLFW, windowtitle, WINDOW_FRAMEWORK_GLFW, WINDOW_RENDERER_OPENGL, @@ -132,12 +131,6 @@ Instance* engine_init(const char* windowtitle, i32 windowWidth, i32 windowHeight p->mem = memory_new(initial_memory); - p->cam = &default_camera; - - glm_ortho_default(45.f, p->cam->per); - - // TODO: Add global bindings - INFO("Available cores: %d", nproc()); GLOBAL_PLATFORM = p; @@ -214,6 +207,17 @@ static const char* default_quad_shader_fragment_src = "}"; +void framebuffer_size_callback_default(ivec3* dst,ivec2 src) { + glm_ivec2_copy(src, *dst); +} + +void camera_reset_callback_default(Camera* dst, ivec2 src) { + *dst = (Camera)DEFAULT_CAMERA; + glm_ortho_default(45.f, dst->per); +} + + + i32 engine_run(Instance* p, StateType initial_state, void* state_arg) { // TODO: MOVE TO INIT @@ -236,7 +240,6 @@ i32 engine_run(Instance* p, StateType initial_state, void* state_arg) { StateType state = initial_state; Window* w = p->window; - Camera default_renderbuffer_camera = default_camera; { u64 state_init_time = get_time(); @@ -261,7 +264,11 @@ i32 engine_run(Instance* p, StateType initial_state, void* state_arg) { {.num_textures = 1, .num_renderbuffers = 1, .dimensions = {wsz[0], wsz[1], 0}}, }; window_init_renderstack(w, 1, sizeof(t) / sizeof(t[0]), p, t); - //w->render_targets->cam[0] = &default_renderbuffer_camera; + + w->render_targets->framebuffer_size_callback[0] = &framebuffer_size_callback_default; + w->render_targets->camera_reset_callback[0] = &camera_reset_callback_default; + camera_reset_callback_default(&default_camera, wsz); + w->render_targets->cam[0] = &default_camera; } u32 first_texture = 0; @@ -330,7 +337,6 @@ i32 engine_run(Instance* p, StateType initial_state, void* state_arg) { i_ctx_reset(); // Reset camera to default camera - p->cam = &default_camera; free(w->render_targets); state = next_state; @@ -359,7 +365,10 @@ i32 engine_run(Instance* p, StateType initial_state, void* state_arg) { }; window_init_renderstack(w, 1, sizeof(t) / sizeof(t[0]), p, t); - //w->render_targets->cam[0] = &default_camera; + w->render_targets->framebuffer_size_callback[0] = &framebuffer_size_callback_default; + w->render_targets->camera_reset_callback[0] = &camera_reset_callback_default; + camera_reset_callback_default(&default_camera, wsz); + w->render_targets->cam[0] = &default_camera; } u32 first_texture = 0; -- cgit v1.3