#ifndef _CullingManager_H__ #define _CullingManager_H__ #include "HierarchyInterface.h" namespace GtpVisibility { /** This abstract class implements an interface for a specific culling algorithm. The algorithm is either used to render a scene or to make a visibility query. */ class CullingManager { public: /** Constructor taking a scene traverser for a specific type of hierarchy as argument. */ CullingManager(HierarchyInterface *hierarchyInterface); /** Renders the scene using a specific occlusion culling algorithm, e.g., coherent hierarchical culling or stop and wait. */ virtual void RenderScene() = 0; /** Sets the hierarchy interface. @param hierarchyInterface @remark the hierarchy interface encapsulates the hierarchy we are working on */ void SetHierarchyInterface(HierarchyInterface *hierarchyInterface); protected: unsigned int mNumQueryCulledNodes; unsigned int mNumFrustumCulledNodes; unsigned int mVisibilityThreshold; HierarchyInterface *mHierarchyInterface; }; } // namespace GtpVisibility #endif // CullingManager