source: trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingDotSceneManager.cpp @ 39

Revision 39, 3.5 KB checked in by mattausch, 19 years ago (diff)
Line 
1#include "OgreOcclusionCullingDotSceneManager.h"
2#include "OgreMath.h"
3#include "OgreIteratorWrappers.h"
4#include "OgreRenderSystem.h"
5#include "OgreCamera.h"
6#include "OgreHardwareOcclusionQuery.h"
7//#include "OgreWireBoundingBox.h"
8#include "OgreSolidHalfBoundingBox.h"
9
10//#include <windows.h>
11
12namespace Ogre {
13        //-----------------------------------------------------------------------
14        OcclusionCullingDotSceneManager::OcclusionCullingDotSceneManager()
15        {
16                mOcclusionCullingSceneTraverser = new OcclusionCullingSceneTraverser(this, mDestRenderSystem);
17                //mDisplayNodes = true;
18                mShowBoundingBoxes = true;
19                //mShowBoxes = true;
20        }
21        //-----------------------------------------------------------------------
22        OcclusionCullingDotSceneManager::~OcclusionCullingDotSceneManager()
23        {
24                delete mOcclusionCullingSceneTraverser;
25        }
26        //-----------------------------------------------------------------------
27        void OcclusionCullingDotSceneManager::_renderVisibleObjects(void)
28        {
29                //-- render background
30                clearSpecialCaseRenderQueues();
31                addSpecialCaseRenderQueue(RENDER_QUEUE_BACKGROUND);
32                addSpecialCaseRenderQueue(RENDER_QUEUE_SKIES_EARLY);
33       
34                setSpecialCaseRenderQueueMode(SceneManager::SCRQM_INCLUDE);
35                DotSceneManager::_renderVisibleObjects( );
36                _deleteRenderedQueueGroups();
37
38                //-- render visible objects (i.e., all but overlay)
39                clearSpecialCaseRenderQueues();
40                addSpecialCaseRenderQueue(RENDER_QUEUE_OVERLAY);
41                setSpecialCaseRenderQueueMode(SceneManager::SCRQM_EXCLUDE);
42
43                mOcclusionCullingSceneTraverser->renderScene(mCameraInProgress, mSceneRoot);
44                _deleteRenderedQueueGroups();
45
46                //-- render overlay
47                clearSpecialCaseRenderQueues();
48                DotSceneManager::_renderVisibleObjects( );
49       
50                clearSpecialCaseRenderQueues();
51        }
52        //-----------------------------------------------------------------------
53        void OcclusionCullingDotSceneManager::_findVisibleObjects(Camera* cam, bool onlyShadowCasters)
54        {
55                // must be empty because objects are found and rendered in an interleaved fashion
56                // in _renderVisibibleObjects
57        }
58        //-----------------------------------------------------------------------
59        void OcclusionCullingDotSceneManager::_updateSceneGraph(Camera* cam)
60        {
61                mOcclusionCullingSceneTraverser->setNumSceneNodes(mSceneNodes.size());
62                mOcclusionCullingSceneTraverser->setRenderSystem(mDestRenderSystem);
63
64        mOcclusionCullingSceneTraverser->preprocess();
65               
66                DotSceneManager::_updateSceneGraph(cam);
67        }
68        //-----------------------------------------------------------------------
69        bool OcclusionCullingDotSceneManager::setOption( const String & key, const void * val )
70        {
71                return mOcclusionCullingSceneTraverser->setOption( key, val) || DotSceneManager::setOption( key, val );
72        }
73        //-----------------------------------------------------------------------
74        bool OcclusionCullingDotSceneManager::getOption( const String & key, void *val )
75        {
76                return mOcclusionCullingSceneTraverser->getOption( key, val) || DotSceneManager::getOption( key, val ) ;
77        }
78        //-----------------------------------------------------------------------
79        bool OcclusionCullingDotSceneManager::getOptionValues( const String & key, StringVector  &refValueList )
80        {
81                return DotSceneManager::getOptionValues( key, refValueList );
82        }
83        //-----------------------------------------------------------------------
84        bool OcclusionCullingDotSceneManager::getOptionKeys( StringVector & refKeys )
85        {
86                return mOcclusionCullingSceneTraverser->getOptionKeys ( refKeys ) || DotSceneManager::getOptionKeys( refKeys );
87        }
88       
89}       
Note: See TracBrowser for help on using the repository browser.