source: trunk/VUT/GtpVisibility/src/VisibilityManager.cpp @ 103

Revision 103, 2.6 KB checked in by mattausch, 19 years ago (diff)

fixed bug with shadow maps

RevLine 
[59]1#include "VisibilityManager.h"
2#include "StopAndWaitCullingManager.h"
3#include "CoherentHierarchicalCullingManager.h"
4#include "FrustumCullingManager.h"
[65]5#include "DummyPreprocessingManager.h"
6#include "DummyQueryManager.h"
[59]7
8namespace GtpVisibility {
[95]9
[74]10//-----------------------------------------------------------------------
11VisibilityManager::VisibilityManager(VisibilityEnvironment *visEnvironment):
[100]12mVisibilityThreshold(0), mCullingManager(NULL),
13mQueryManager(new DummyQueryManager(NULL)),
14mPreprocessingManager(new DummyPreprocessingManager(NULL)),
15mVisibilityEnvironment(visEnvironment)
[59]16{
[102]17        //SetCullingManager(VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING);
[103]18        //SetCullingManager(VisibilityEnvironment::STOP_AND_WAIT_CULLING);
19        SetCullingManager(VisibilityEnvironment::FRUSTUM_CULLING);
[59]20}
[74]21//-----------------------------------------------------------------------
[59]22VisibilityManager::~VisibilityManager()
23{
24        delete mCullingManager;
25}
[74]26//-----------------------------------------------------------------------
27void VisibilityManager::SetCullingManager(
28        VisibilityEnvironment::CullingManagerType ocmType)
[59]29{
[94]30        // change only if necessary
31        if (!mCullingManager || (mCullingManagerType != ocmType))
[59]32        {
[92]33                // delete old culling manager
[100]34                if (mCullingManager)
[103]35                {
[94]36                        delete mCullingManager;
[103]37                }
[92]38                mCullingManagerType = ocmType;
39               
[59]40                switch (ocmType)
41                {
[74]42                case VisibilityEnvironment::STOP_AND_WAIT_CULLING:
43                        mCullingManager = new StopAndWaitCullingManager();
[59]44                        break;
45
46                case VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING:
[74]47                        mCullingManager = new CoherentHierarchicalCullingManager();
[59]48                        break;
49
50                case VisibilityEnvironment::FRUSTUM_CULLING:
[74]51                        mCullingManager = new FrustumCullingManager();
[59]52                        break;
53                default:
[74]54                        mCullingManager = new StopAndWaitCullingManager();
[59]55                        break;
56                }
57        }
58}
[74]59//-----------------------------------------------------------------------
60void VisibilityManager::SetVisibilityCullingThreshold(unsigned int visibilityThreshold)
61{
62        mVisibilityThreshold = visibilityThreshold;
63        mCullingManager->SetVisibilityThreshold(mVisibilityThreshold);
64}
65//-----------------------------------------------------------------------
[59]66CullingManager *VisibilityManager::GetCullingManager()
67{
68        return mCullingManager;
69}
[74]70//-----------------------------------------------------------------------
[59]71void VisibilityManager::ApplyVisibilityCulling()
72{
73        mCullingManager->RenderScene();
74}
[100]75//-----------------------------------------------------------------------
[92]76VisibilityEnvironment::CullingManagerType VisibilityManager::GetCullingManagerType()
77{
78        return mCullingManagerType;
79}
[100]80
[59]81} // namespace GtpVisibility
Note: See TracBrowser for help on using the repository browser.