From 12e38ec7a7e88ca419693750ced455a96832f0d9 Mon Sep 17 00:00:00 2001 From: aignacio_sf <> Date: Wed, 13 Dec 2006 19:29:41 +0000 Subject: [PATCH] Add stencil buffer clear. Remove non working code. --- .../glstuff/glGraphicsStateGuardian_src.cxx | 45 +++---------------- 1 file changed, 7 insertions(+), 38 deletions(-) diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index b09dafdb58..075114d8ff 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -7459,7 +7459,6 @@ do_issue_stencil() { << "SRS_back_stencil_pass_z_pass_operation " << stencil -> get_render_state (StencilAttrib::SRS_back_stencil_pass_z_pass_operation) << "\n"; } - if (true) { bool on; @@ -7488,44 +7487,14 @@ do_issue_stencil() { stencil_render_states -> set_stencil_render_state (true, StencilRenderStates::SRS_write_mask, stencil -> get_render_state (StencilAttrib::SRS_write_mask)); } } - else - { - bool on; - on = false; - - stencil_render_states -> set_stencil_render_state (true, StencilRenderStates::SRS_front_enable, stencil -> get_render_state (StencilAttrib::SRS_front_enable)); - stencil_render_states -> set_stencil_render_state (true, StencilRenderStates::SRS_back_enable, stencil -> get_render_state (StencilAttrib::SRS_back_enable)); - - // SRS_reference and SRS_read_mask are set when SRS_front_comparison_function is set - stencil_render_states -> set_stencil_render_state (false, StencilRenderStates::SRS_reference, stencil -> get_render_state (StencilAttrib::SRS_reference)); - stencil_render_states -> set_stencil_render_state (false, StencilRenderStates::SRS_read_mask, stencil -> get_render_state (StencilAttrib::SRS_read_mask)); - - if (stencil -> get_render_state (StencilAttrib::SRS_front_enable)) { - stencil_render_states -> set_stencil_render_state (true, StencilRenderStates::SRS_front_comparison_function, stencil -> get_render_state (StencilAttrib::SRS_front_comparison_function)); - - // setting 2 operation states can be defered since all three must be set at once - stencil_render_states -> set_stencil_render_state (false, StencilRenderStates::SRS_front_stencil_fail_operation, stencil -> get_render_state (StencilAttrib::SRS_front_stencil_fail_operation)); - stencil_render_states -> set_stencil_render_state (false, StencilRenderStates::SRS_front_stencil_pass_z_fail_operation, stencil -> get_render_state (StencilAttrib::SRS_front_stencil_pass_z_fail_operation)); - stencil_render_states -> set_stencil_render_state (true, StencilRenderStates::SRS_front_stencil_pass_z_pass_operation, stencil -> get_render_state (StencilAttrib::SRS_front_stencil_pass_z_pass_operation)); - - on = true; - } - - if (stencil -> get_render_state (StencilAttrib::SRS_back_enable)) { - stencil_render_states -> set_stencil_render_state (true, StencilRenderStates::SRS_back_comparison_function, stencil -> get_render_state (StencilAttrib::SRS_back_comparison_function)); - - // setting 2 operation states can be defered since all three must be set at once - stencil_render_states -> set_stencil_render_state (false, StencilRenderStates::SRS_back_stencil_fail_operation, stencil -> get_render_state (StencilAttrib::SRS_back_stencil_fail_operation)); - stencil_render_states -> set_stencil_render_state (false, StencilRenderStates::SRS_back_stencil_pass_z_fail_operation, stencil -> get_render_state (StencilAttrib::SRS_back_stencil_pass_z_fail_operation)); - stencil_render_states -> set_stencil_render_state (true, StencilRenderStates::SRS_back_stencil_pass_z_pass_operation, stencil -> get_render_state (StencilAttrib::SRS_back_stencil_pass_z_pass_operation)); - - on = true; - } - - if (on) { - stencil_render_states -> set_stencil_render_state (true, StencilRenderStates::SRS_write_mask, stencil -> get_render_state (StencilAttrib::SRS_write_mask)); - } + if (stencil -> get_render_state (StencilAttrib::SRS_clear)) { + GLbitfield mask = 0; + + // clear stencil buffer + GLP(ClearStencil)(stencil -> get_render_state (StencilAttrib::SRS_clear_value)); + mask |= GL_STENCIL_BUFFER_BIT; + GLP(Clear)(mask); } } else {