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

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