0027130: Visualization, Ray tracing - skip structures with transformation persistence...
[occt.git] / src / OpenGl / OpenGl_Group.hxx
index cd76dd2..9055671 100644 (file)
@@ -52,6 +52,9 @@ public:
          : Handle(Graphic3d_Aspects)();
   }
 
+  //! Return TRUE if group contains primitives with transform persistence.
+  bool HasPersistence() const { return myStructure != NULL && !myStructure->TransformPersistence().IsNull(); }
+
   //! Update aspect.
   Standard_EXPORT virtual void SetGroupPrimitivesAspect (const Handle(Graphic3d_Aspects)& theAspect) Standard_OVERRIDE;
 
@@ -106,6 +109,18 @@ protected:
 
   Standard_EXPORT virtual ~OpenGl_Group();
 
+private:
+
+  //! Render element if it passes the filtering procedure.
+  //! This method should be used for elements which can be used in scope of rendering algorithms.
+  //! E.g. elements of groups during recursive rendering.
+  //! If render filter is null, pure rendering is performed.
+  //! @param theWorkspace [in] the rendering workspace
+  //! @param theFilter    [in] the rendering filter to check whether the element should be rendered or not
+  //! @return True if element passes the check and renders
+  Standard_EXPORT bool renderFiltered (const Handle(OpenGl_Workspace)& theWorkspace,
+                                       OpenGl_Element* theElement) const;
+
 protected:
 
   OpenGl_Aspects*     myAspects;