src/scene.c

changeset 121
ede9a9e92ff9
parent 112
3e956c96dd6c
child 126
77c13e14a65f
--- a/src/scene.c	Tue May 13 20:27:43 2025 +0200
+++ b/src/scene.c	Wed May 14 20:14:18 2025 +0200
@@ -41,12 +41,12 @@
 
 #include <assert.h>
 
-void asc_scene_init(AscScene *scene, AscCameraParams camera_params) {
+void asc_scene_init_(AscScene *scene, struct asc_camera_init_args args) {
     if (scene->root != NULL) {
         asc_wprintf("Scene %"PRIxPTR" is already initialized - initialization skipped.", (uintptr_t) scene);
         return;
     }
-    asc_camera_init(&scene->camera, camera_params);
+    asc_camera_init_(&scene->camera, args);
     scene->root = asc_scene_node_empty();
 
     asc_dprintf("Initialized scene %"PRIxPTR, (uintptr_t) scene);
@@ -149,6 +149,19 @@
             scene->camera.viewport.size.width,
             scene->camera.viewport.size.height
     );
+    if (scene->camera.viewport_clear) {
+        glScissor(
+            scene->camera.viewport.pos.x,
+            -scene->camera.viewport.pos.y,
+            scene->camera.viewport.size.width,
+            scene->camera.viewport.size.height
+        );
+        glEnable(GL_SCISSOR_TEST);
+        const asc_col4f col = scene->camera.clear_color;
+        glClearColor(col.red, col.green, col.blue, col.alpha);
+        glClear(GL_COLOR_BUFFER_BIT);
+        glDisable(GL_SCISSOR_TEST);
+    }
 
     // -------------------------
     // process the render groups

mercurial