diff options
| author | HampusM <hampus@hampusmat.com> | 2026-04-18 17:07:50 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-04-18 17:07:50 +0200 |
| commit | 450670dbfb153f00adf431ad77379042a9114ab0 (patch) | |
| tree | 7c31b0b672ddbfcbf4507e8b61f73e9af34909ff /engine/src/renderer | |
| parent | bb2929df6b013fba82a866cc1dc14e842e94d0af (diff) | |
Diffstat (limited to 'engine/src/renderer')
| -rw-r--r-- | engine/src/renderer/opengl.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs index df57b84..b434cd8 100644 --- a/engine/src/renderer/opengl.rs +++ b/engine/src/renderer/opengl.rs @@ -40,7 +40,9 @@ use opengl_bindings::misc::{ Capability, SetViewportError as GlSetViewportError, clear_buffers, + define_scissor_box as gl_define_scissor_box, enable, + get_viewport as gl_get_viewport, set_enabled, }; use opengl_bindings::shader::{ @@ -1203,6 +1205,43 @@ fn handle_commands( draw_props.depth_test_enabled, ); } + + if draw_props_update_flags + .contains(DrawPropertiesUpdateFlags::SCISSOR_TEST_ENABLED) + { + set_enabled( + curr_gl_ctx, + Capability::ScissorTest, + draw_props.scissor_test_enabled, + ); + } + + if draw_props_update_flags + .contains(DrawPropertiesUpdateFlags::SCISSOR_BOX) + { + gl_define_scissor_box( + curr_gl_ctx, + draw_props.scissor_box.lower_left_corner_pos.into(), + draw_props + .scissor_box + .size + .unwrap_or_else(|| { + let (_, viewport_size) = gl_get_viewport(curr_gl_ctx); + + Dimens::<u16> { + width: viewport_size + .width + .try_into() + .expect("Viewport width too large"), + height: viewport_size + .height + .try_into() + .expect("Viewport height too large"), + } + }) + .into(), + ); + } } } } |
