Ignore:
Timestamp:
05/09/05 01:24:02 (19 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/Ogre/src/OgreVisibilityTerrainSceneManager.cpp

    r86 r87  
    77#include <OgreCamera.h> 
    88 
    9 //#include <windows.h> 
     9#include <windows.h> 
    1010 
    1111namespace Ogre { 
    12 //namespace GtpVisibility { 
     12 
    1313//----------------------------------------------------------------------- 
    1414VisibilityTerrainSceneManager::VisibilityTerrainSceneManager( 
    15         GtpVisibility::VisibilityManager *visManager): mVisibilityManager(visManager) 
     15        GtpVisibility::VisibilityManager *visManager) 
     16: mVisibilityManager(visManager), mUseCulling(true) 
    1617{ 
    1718        mHierarchyInterface =  
    1819                new OctreeHierarchyInterface(this, mDestRenderSystem); 
    1920 
    20         //mShowBoxes = true; 
    2121        //mDisplayNodes = true; 
    2222        //mShowBoundingBoxes = true; 
     
    3131void VisibilityTerrainSceneManager::_renderVisibleObjects() 
    3232{ 
     33        mHierarchyInterface->InitFrame(mOctree, mCameraInProgress); 
     34        mVisibilityManager->GetCullingManager()->InitFrame(); 
     35 
     36        if(!mUseCulling) 
     37        {        
     38                OctreeSceneManager::_renderVisibleObjects(); 
     39                return; 
     40        }  
     41         
     42        //-- hierarchical culling 
     43        // the objects of different layers (e.g., background, scene,  
     44        // overlay) must be identified and rendered one after another 
     45 
    3346        //-- render background 
    3447        clearSpecialCaseRenderQueues(); 
     
    4760        setSpecialCaseRenderQueueMode(SceneManager::SCRQM_EXCLUDE); 
    4861 
    49         mHierarchyInterface->InitFrame(mOctree, mCameraInProgress); 
     62        //-- the hierarchical culling algorithm 
    5063        mVisibilityManager->ApplyVisibilityCulling(); 
    5164 
     
    5669        //-- render overlay 
    5770        clearSpecialCaseRenderQueues(); 
    58         SceneManager::_renderVisibleObjects( ); 
     71        SceneManager::_renderVisibleObjects(); 
    5972} 
    6073//----------------------------------------------------------------------- 
    6174void VisibilityTerrainSceneManager::_findVisibleObjects(Camera* cam, bool onlyShadowCasters) 
    6275{ 
    63         // must be empty because objects are found and rendered in an interleaved fashion 
     76        // empty if hierarchical culling is used => 
     77        // we interleave identification and rendering of objects  
    6478        // in _renderVisibibleObjects  
     79        if(!mUseCulling) 
     80        { 
     81                OctreeSceneManager::_findVisibleObjects(cam, onlyShadowCasters); 
     82        } 
    6583} 
    6684//----------------------------------------------------------------------- 
     
    7997bool VisibilityTerrainSceneManager::setOption(const String & key, const void * val) 
    8098{ 
     99        if (key == "UseCulling") 
     100        { 
     101                mUseCulling = (*static_cast<const bool *>(val)); 
     102                return true; 
     103        } 
     104 
    81105        return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 
    82106                setOption(key, val) || TerrainSceneManager::setOption(key, val); 
     
    115139        return mVisibilityManager; 
    116140} 
    117 //} // namespace GtpVisibility 
    118141} // namespace Ogre 
Note: See TracChangeset for help on using the changeset viewer.