#include "VisibilityManager.h" #include "StopAndWaitCullingManager.h" #include "CoherentHierarchicalCullingManager.h" #include "FrustumCullingManager.h" #include "DummyPreprocessingManager.h" #include "DummyQueryManager.h" namespace GtpVisibility { VisibilityManager::VisibilityManager(VisibilityEnvironment *visEnvironment) { mVisibilityEnvironment = visEnvironment; //mVisibilityManagerType = VisibilityEnvironment::STOP_AND_WAIT; //mVisibilityManager = new StopAndWaitCullingManager(NULL); mCullingManagerType = VisibilityEnvironment::FRUSTUM_CULLING; mCullingManager = new FrustumCullingManager(0); mQueryManager = new DummyQueryManager(0); mPreprocessingManager = new DummyPreprocessingManager(0); } VisibilityManager::~VisibilityManager() { delete mCullingManager; } void VisibilityManager::SetCullingManager(VisibilityEnvironment::CullingManagerType ocmType) { if (mCullingManagerType != ocmType) { mCullingManagerType = ocmType; delete mCullingManager; switch (ocmType) { case VisibilityEnvironment::STOP_AND_WAIT: mCullingManager = new StopAndWaitCullingManager(NULL); break; case VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING: mCullingManager = new CoherentHierarchicalCullingManager(NULL); break; case VisibilityEnvironment::FRUSTUM_CULLING: mCullingManager = new FrustumCullingManager(NULL); break; default: mCullingManager = new StopAndWaitCullingManager(NULL); break; } } } CullingManager *VisibilityManager::GetCullingManager() { return mCullingManager; } void VisibilityManager::ApplyVisibilityCulling() { mCullingManager->RenderScene(); } } // namespace GtpVisibility