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/OgreVisibilitySceneManager.cpp

    r74 r87  
    1313//----------------------------------------------------------------------- 
    1414VisibilitySceneManager::VisibilitySceneManager(GtpVisibility::VisibilityManager *visManager) 
    15 :mVisibilityManager(visManager) 
     15:mVisibilityManager(visManager), mUseCulling(true) 
    1616{ 
    1717        mHierarchyInterface = new SceneNodeHierarchyInterface(this, mDestRenderSystem); 
     
    2525void VisibilitySceneManager::_findVisibleObjects(Camera* cam, bool onlyShadowCasters) 
    2626{ 
    27         // empty because we have to find objects in _renderVisibleObjects 
     27        // empty if hierarchical culling is used => 
     28        // we interleave identification and rendering of objects  
     29        // in _renderVisibibleObjects  
     30        if(!mUseCulling) 
     31        { 
     32                SceneManager::_findVisibleObjects(cam, onlyShadowCasters); 
     33        } 
    2834} 
    2935//----------------------------------------------------------------------- 
    3036void VisibilitySceneManager::_renderVisibleObjects() 
    3137{ 
    32                 //-- render background 
     38        mHierarchyInterface->InitFrame(mSceneRoot, mCameraInProgress); 
     39        mVisibilityManager->GetCullingManager()->InitFrame(); 
     40 
     41        if(!mUseCulling) 
     42        {        
     43                SceneManager::_renderVisibleObjects(); 
     44                return; 
     45        }  
     46         
     47        //-- hierarchical culling 
     48        // the objects of different layers (e.g., background, scene,  
     49        // overlay) must be identified and rendered one after another 
     50 
     51        //-- render background 
    3352        clearSpecialCaseRenderQueues(); 
    3453        addSpecialCaseRenderQueue(RENDER_QUEUE_BACKGROUND); 
     
    3655 
    3756        setSpecialCaseRenderQueueMode(SceneManager::SCRQM_INCLUDE); 
    38         SceneManager::_renderVisibleObjects( ); 
     57        SceneManager::_renderVisibleObjects(); 
    3958#ifdef GTP_VISIBILITY_MODIFIED_OGRE 
    4059        _deleteRenderedQueueGroups(); 
    4160#endif 
     61 
    4262        //-- render visible objects (i.e., all but overlay) 
    4363        clearSpecialCaseRenderQueues(); 
     
    4565        setSpecialCaseRenderQueueMode(SceneManager::SCRQM_EXCLUDE); 
    4666 
    47         mHierarchyInterface->InitFrame(mSceneRoot, mCameraInProgress); 
     67        //-- the hierarchical culling algorithm 
    4868        mVisibilityManager->ApplyVisibilityCulling(); 
    4969 
     
    5474        //-- render overlay 
    5575        clearSpecialCaseRenderQueues(); 
    56         SceneManager::_renderVisibleObjects( ); 
    57  
    58         clearSpecialCaseRenderQueues(); 
     76        SceneManager::_renderVisibleObjects(); 
    5977} 
    6078//----------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.