diff -r e26b4ac1661c -r 8a8cc6725b48 src/window.c --- a/src/window.c Wed Mar 06 23:38:17 2024 +0100 +++ b/src/window.c Fri Mar 15 00:06:59 2024 +0100 @@ -63,6 +63,9 @@ static void asc_window_init_scenes(AscWindow *window) { asc_scene_init(&window->ui); + asc_camera_ortho(&window->ui.cameras[0], (asc_recti){ + 0, 0, window->dimensions + }); } AscWindow *asc_window_initialize(unsigned int index, AscWindowSettings const *settings) { @@ -98,13 +101,7 @@ &window->dimensions.width, &window->dimensions.height ); - asc_mat4f_ortho( - window->projection, - 0, - (float) window->dimensions.width, - (float) window->dimensions.height, - 0 - ); + window->resized = true; // count initial sizing as resize SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, settings->gl_major_version); @@ -127,8 +124,8 @@ asc_dprintf("Window %u initialized", window->id); if (asc_primitives_init(&window->primitives)) { + asc_context.active_window = window; asc_window_init_scenes(window); - asc_context.active_window = window; return window; } else { asc_dprintf("!!! Creating primitives for window %u failed !!!", window->id); @@ -183,14 +180,13 @@ memset(window, 0, sizeof(AscWindow)); } -void asc_window_sync(AscWindow const* window) { +void asc_window_sync(AscWindow* window) { AscWindow const *active_window = asc_context.active_window; if (window != active_window) { asc_window_activate(window); } - // Clear viewport for new frame - glViewport(0, 0, window->dimensions.width, window->dimensions.height); + // Clear for new frame glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -200,6 +196,9 @@ // Swap Buffers SDL_GL_SwapWindow(window->window); + // Clear Flags + window->resized = false; + if (window != active_window) { asc_window_activate(active_window); }