diff -r 54e56cdddab2 -r ede9a9e92ff9 src/scene.c --- 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 -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