diff --git a/src/OpenGl/OpenGl_CappingAlgo.cxx b/src/OpenGl/OpenGl_CappingAlgo.cxx index 61206dd8b1..a729da3620 100755 --- a/src/OpenGl/OpenGl_CappingAlgo.cxx +++ b/src/OpenGl/OpenGl_CappingAlgo.cxx @@ -228,7 +228,5 @@ Standard_Boolean OpenGl_CappingAlgoFilter::ShouldRender (const Handle(OpenGl_Wor return Standard_False; } - const OpenGl_PrimitiveArray* aPArray = dynamic_cast (theGlElement); - return aPArray != NULL - && aPArray->IsFillDrawMode(); + return theGlElement->IsFillDrawMode(); } diff --git a/src/OpenGl/OpenGl_Element.hxx b/src/OpenGl/OpenGl_Element.hxx index 74890eeb94..1df5afec69 100644 --- a/src/OpenGl/OpenGl_Element.hxx +++ b/src/OpenGl/OpenGl_Element.hxx @@ -54,6 +54,11 @@ public: theElement = NULL; } +public: + + //! Return TRUE if primitive type generates shaded triangulation (to be used in filters). + virtual Standard_Boolean IsFillDrawMode() const { return false; } + public: //! Render element if it passes the filtering procedure. This method should diff --git a/src/OpenGl/OpenGl_LayerList.cxx b/src/OpenGl/OpenGl_LayerList.cxx index eddee5b10c..51dbc606c7 100644 --- a/src/OpenGl/OpenGl_LayerList.cxx +++ b/src/OpenGl/OpenGl_LayerList.cxx @@ -825,9 +825,7 @@ Standard_Boolean OpenGl_LayerList::OpenGl_OpaqueFilter::ShouldRender (const Hand return Standard_False; } - const OpenGl_PrimitiveArray* aPArray = dynamic_cast (theGlElement); - if (aPArray == NULL - || !aPArray->IsFillDrawMode()) + if (!theGlElement->IsFillDrawMode()) { return Standard_True; } @@ -856,9 +854,7 @@ Standard_Boolean OpenGl_LayerList::OpenGl_TransparentFilter::ShouldRender (const return Standard_False; } - const OpenGl_PrimitiveArray* aPArray = dynamic_cast (theGlElement); - if (aPArray == NULL - || !aPArray->IsFillDrawMode()) + if (!theGlElement->IsFillDrawMode()) { return dynamic_cast (theGlElement) != NULL; } diff --git a/src/OpenGl/OpenGl_PrimitiveArray.hxx b/src/OpenGl/OpenGl_PrimitiveArray.hxx index 5f1fa934c9..ddeff49591 100644 --- a/src/OpenGl/OpenGl_PrimitiveArray.hxx +++ b/src/OpenGl/OpenGl_PrimitiveArray.hxx @@ -53,10 +53,10 @@ public: Standard_EXPORT virtual ~OpenGl_PrimitiveArray(); //! Render primitives to the window - Standard_EXPORT virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const; + Standard_EXPORT virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const Standard_OVERRIDE; //! Release OpenGL resources (VBOs) - Standard_EXPORT virtual void Release (OpenGl_Context* theContext); + Standard_EXPORT virtual void Release (OpenGl_Context* theContext) Standard_OVERRIDE; //! Return true if VBOs initialization has been performed. //! VBO initialization is performed during first Render() call. @@ -70,7 +70,7 @@ public: GLint DrawMode() const { return myDrawMode; } //! Return TRUE if primitive type generates shaded triangulation. - Standard_Boolean IsFillDrawMode() const { return myIsFillType; } + virtual Standard_Boolean IsFillDrawMode() const Standard_OVERRIDE { return myIsFillType; } //! @return indices array const Handle(Graphic3d_IndexBuffer)& Indices() const { return myIndices; }