src/window.c

changeset 37
8a8cc6725b48
parent 34
45d29d7221cc
child 39
7cf310cc47cb
--- 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);
     }

mercurial