From 54d15231042c250adb42e95f1daab737ce0fc752 Mon Sep 17 00:00:00 2001 From: age Date: Thu, 1 Oct 2020 12:48:24 +0300 Subject: [PATCH] 0030791: Visualization - possibility to display materials by different hatching style for clipping # added check if capping plane should be rendered --- src/OpenGl/OpenGl_CappingAlgo.cxx | 35 +++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/OpenGl/OpenGl_CappingAlgo.cxx b/src/OpenGl/OpenGl_CappingAlgo.cxx index 8076946136..da513bca69 100755 --- a/src/OpenGl/OpenGl_CappingAlgo.cxx +++ b/src/OpenGl/OpenGl_CappingAlgo.cxx @@ -244,6 +244,28 @@ namespace // clear stencil only if something has been actually drawn theStencilSentry.Init(); + const OpenGl_Aspects* aGroupAspectFace = aGroupIter.Value()->GlAspects(); + const OpenGl_CappingPlaneResource* aGroupAspectCapping = aGroupIter.Value()->AspectFillCapping(); + const OpenGl_CappingPlaneResource* anAspectCapping = + thePlane && (!aGroupAspectCapping || aGroupAspectCapping->Aspect().IsNull() || aPlane->ToOverrideCappingAspect()) + ? thePlane.get() + : aGroupAspectCapping; + + if (anAspectCapping == NULL) + { + anAspectCapping = THE_DEFAULT_ASPECT; + } + + const OpenGl_Aspects* anAspectFace = anAspectCapping->CappingFaceAspect (aGroupAspectFace); + + // check if capping plane should be rendered within current pass (only opaque / only transparent) + theWorkspace->SetAspects (anAspectFace); + theWorkspace->SetRenderFilter (aPrevFilter); + if (!theWorkspace->ShouldRender (theQuad)) + { + continue; + } + // suppress only opaque/transparent filter since for filling stencil the whole geometry should be drawn theWorkspace->SetRenderFilter (anAnyFilter); @@ -294,19 +316,6 @@ namespace glEnable (GL_DEPTH_TEST); } - const OpenGl_Aspects* aGroupAspectFace = aGroupIter.Value()->GlAspects(); - const OpenGl_CappingPlaneResource* aGroupAspectCapping = aGroupIter.Value()->AspectFillCapping(); - const OpenGl_CappingPlaneResource* anAspectCapping = - thePlane && (!aGroupAspectCapping || aGroupAspectCapping->Aspect().IsNull() || aPlane->ToOverrideCappingAspect()) - ? thePlane.get() - : aGroupAspectCapping; - - if (anAspectCapping == NULL) - { - anAspectCapping = THE_DEFAULT_ASPECT; - } - - const OpenGl_Aspects* anAspectFace = anAspectCapping->CappingFaceAspect (aGroupAspectFace); const Standard_Boolean hasHatch = anAspectCapping->Aspect()->ToDrawHatch(); const OpenGl_Aspects* anAspectHatching = hasHatch ? anAspectCapping->HatchingFaceAspect() : NULL; const Standard_Boolean hasTextureHatch = hasHatch && !anAspectCapping->Aspect()->TextureHatch().IsNull(); -- 2.39.5