source: trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingSceneManager.cpp @ 42

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