summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoronelin <oscar@nelin.dk>2025-03-21 12:32:59 +0000
committeronelin <oscar@nelin.dk>2025-03-21 12:39:20 +0000
commitfcd22d1fd9d99a73eefa984548adf86189a0060b (patch)
tree63bdca43e83314ed406b2b5c1ccef10c48e0c1f4 /src
parent4e3de52226b2a247ea5da6240ae5e58a4cf95018 (diff)
Reset the camera before first iteration
Diffstat (limited to 'src')
-rw-r--r--src/core/src/loop.c4
-rw-r--r--src/rendering/include/engine/rendering/rendering.h1
-rw-r--r--src/rendering/include/engine/rendering/window.h1
-rw-r--r--src/rendering/src/rendering.c10
-rw-r--r--src/rendering/src/window.c16
5 files changed, 23 insertions, 9 deletions
diff --git a/src/core/src/loop.c b/src/core/src/loop.c
index 0062173..dd39db1 100644
--- a/src/core/src/loop.c
+++ b/src/core/src/loop.c
@@ -306,6 +306,9 @@ i32 engine_run(Platform* p, StateType initial_state, void* state_arg) {
/* The target frametime measured in μs */
const u32 fps_cap = p->fps_target > 0 ? 1000000 / p->fps_target : 0;
+ //window_resize(p->window, p->window->windowsize[0], p->window->windowsize[1]);
+ //r_reset_camera(p->cam);
+
/* Main loop */
do {
/* frame_start is μs since engine was initialized */
@@ -323,7 +326,6 @@ i32 engine_run(Platform* p, StateType initial_state, void* state_arg) {
/* Update */
StateType next_state;
- // TODO: maybe use delta instead?
next_state = update_func(dt, (void*)(mem->data));
if (next_state != STATE_null) {
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);