Ignore:
Timestamp:
04/12/05 18:32:32 (19 years ago)
Author:
mattausch
Message:

implementation for terrain + octree scenemanager

Location:
trunk/VUT/OcclusionCullingSceneManager/src
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingDotSceneManager.cpp

    r42 r44  
    55#include "OgreCamera.h" 
    66#include "OgreHardwareOcclusionQuery.h" 
    7 //#include "OgreWireBoundingBox.h" 
    87#include "OgreSolidHalfBoundingBox.h" 
    98 
  • trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingSceneTraverser.cpp

    r42 r44  
    44#include "OgreCamera.h" 
    55#include "OgreHardwareOcclusionQuery.h" 
    6 //#include "OgreWireBoundingBox.h" 
    76#include "OgreSolidHalfBoundingBox.h" 
    87 
     
    5554                                break; 
    5655                        case RENDER_COHERENT: 
    57                                 renderCoherentWithQueue(cam); 
     56                                //renderCoherentWithQueue(cam); 
     57renderStopAndWait(cam); 
    5858                                break; 
    5959                        default: 
     
    228228                // change state so the bounding box gets not actually rendered on the screen 
    229229                // TODO: in rendervisibleobjects, the rendermode is changed by ogre itself => change this!! 
    230                 setRenderingMode(MODE_QUERY); 
    231                 //setRenderingMode(MODE_RENDER); 
     230                 
     231                //setRenderingMode(MODE_QUERY); 
     232                setRenderingMode(MODE_RENDER); 
    232233 
    233234                // get next available test id 
     
    247248        {        
    248249                // avoid unnecessary state changes 
    249                 if(mode != mQueryMode) 
    250                 { 
     250                //if(mode != mQueryMode) 
     251                //{ 
    251252                        bool enabled = (mode == MODE_RENDER); 
    252253                         
     
    257258 
    258259                        mQueryMode = mode; 
    259                 } 
     260                //} 
    260261        } 
    261262        //----------------------------------------------------------------------- 
  • trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingTerrainSceneManager.cpp

    r42 r44  
    55#include "OgreCamera.h" 
    66#include "OgreHardwareOcclusionQuery.h" 
    7 //#include "OgreWireBoundingBox.h" 
    87#include "OgreSolidHalfBoundingBox.h" 
    98 
     
    1918                //mDisplayNodes = true; 
    2019                //mShowBoundingBoxes = true; 
    21                 mShowBoxes = true; 
    22                 //mMaxDepth = 20; 
     20                //mShowBoxes = true; 
     21                mMaxDepth = 20; 
    2322        } 
    2423        //----------------------------------------------------------------------- 
     
    6665        { 
    6766                //char *msg = "now updating scenegraph\n"; OutputDebugString(msg); 
     67                //mOcclusionCullingTerrainSceneTraverser->preprocess(); 
     68 
    6869        mOcclusionCullingTerrainSceneTraverser->setNumSceneNodes((int)mSceneNodes.size()); 
    6970                mOcclusionCullingTerrainSceneTraverser->setRenderSystem(mDestRenderSystem); 
    70         //mOcclusionCullingTerrainSceneTraverser->preprocess(); 
     71         
    7172                mOcclusionCullingTerrainSceneTraverser->setNumOctreeNodes(mNumOctreeNodes); 
    7273 
     
    99100        NodeList::iterator it = octant->mNodes.begin(); 
    100101          
    101         while ( it != octant->mNodes.end() ) 
     102        while(it != octant->mNodes.end()) 
    102103        { 
    103104            OctreeNode *sn = *it; 
     
    106107 
    107108                        // check bounding box visibility of scene nodes 
    108                         if( cam->isVisible( sn->_getWorldAABB() ) ) 
     109                        if (cam->isVisible(sn->_getWorldAABB())) 
    109110                        { 
    110                                 sn->_addToRenderQueue(cam, getRenderQueue(), false ); 
     111                                sn->_addToRenderQueue(cam, getRenderQueue(), false); 
    111112                                //node->_findVisibleObjects(cam, getRenderQueue(), false, mDisplayNodes, false); 
    112                                 mVisible.push_back( sn ); 
     113                                mVisible.push_back(sn); 
    113114 
    114                                 if ( mDisplayNodes ) 
    115                                         getRenderQueue()->addRenderable( sn ); 
     115                                if (mDisplayNodes) 
     116                                        getRenderQueue()->addRenderable(sn); 
    116117 
    117118                                // check if the scene manager or this node wants the bounding box shown. 
     
    119120                                        sn->_addBoundingBoxToQueue(getRenderQueue()); 
    120121 
    121                                 if ( mShowBoxes ) 
     122                                if (mShowBoxes) 
    122123                                        getRenderQueue()->addRenderable(octant->getWireBoundingBox()); 
    123124                        } 
  • trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingTerrainSceneTraverser.cpp

    r42 r44  
    2323         
    2424                // if we come across some renderable geometry => render it 
    25                 if(octant->numNodes() > 0) 
    26                 { 
    27                         renderOctant(cam, octant); 
    28                 } 
    29  
     25                renderOctant(cam, octant); 
     26                 
    3027                for(int i=0; i<8; i++) 
    3128                { 
     
    9087                                continue; 
    9188                        } 
    92                         // if intersects near plane => skip occlusion query because wrong results possible 
     89                        //if intersects near plane => skip occlusion query because wrong results possible 
    9390                        if(intersects) 
    9491                        { 
     
    212209                { 
    213210                        // if we come across some renderable geometry => render it 
    214                         if(octant->numNodes() > 0) 
    215                         { 
    216                                 renderOctant(cam, octant); 
    217                         } 
    218  
     211                        renderOctant(cam, octant); 
     212                         
    219213                        octant->setOctreeVisible(true); 
    220214                        octant = octant->getParent(); 
     
    224218        void OcclusionCullingTerrainSceneTraverser::renderOctant( Camera *cam, Octree *octant ) 
    225219        { 
     220                //if(octant->numNodes() > 0) 
    226221                if(octant->lastVisited() != octant->lastRendered()) 
    227222                { 
    228                         setRenderingMode(MODE_RENDER); 
     223                        //setRenderingMode(MODE_RENDER); 
    229224 
    230225                        octant->setLastRendered(octant->lastVisited()); 
Note: See TracChangeset for help on using the changeset viewer.