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

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