Ignore:
Timestamp:
04/19/05 09:12:55 (19 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r44 r51  
    1616        mQueryMode(MODE_RENDER), mNumSceneNodes(0), mCurrentAlgorithm(RENDER_COHERENT), 
    1717        mNumQueries(0), mNumTraversedNodes(0), mNumQueryCulledNodes(0), mNumFrustumCulledNodes(0),  
    18         mNumRenderedGeometry(0), mSceneManager(sm), mRenderSystem(rsys), mSceneRoot(NULL) 
     18        mNumRenderedNodes(0),mNumRenderedGeometry(0), mSceneManager(sm), mRenderSystem(rsys), mSceneRoot(NULL) 
    1919        {                
    2020                mHalfBoundingBox[0] = mHalfBoundingBox[1] = 0; 
     
    3939                mNumFrustumCulledNodes = 0; 
    4040                mNumRenderedGeometry = 0; 
    41                  
     41                mNumRenderedNodes = 0; 
     42 
    4243                mCurrentTestIdx = 0; 
    4344 
    4445                initDistanceQueue(cam); 
    4546 
    46 //mCurrentAlgorithm = RENDER_CULL_FRUSTUM; 
     47                //deleteQueries(); 
     48                //char *msg = "deleting queries\n"; OutputDebugString(msg); 
     49        //for(unsigned int i=0; i < 1000; i++) 
     50                //mOcclusionQueries.push_back(mRenderSystem->createHardwareOcclusionQuery()); 
     51            //mCurrentAlgorithm = RENDER_CULL_FRUSTUM; 
     52 
    4753                switch(mCurrentAlgorithm) 
    4854                { 
     
    5460                                break; 
    5561                        case RENDER_COHERENT: 
    56                                 //renderCoherentWithQueue(cam); 
    57 renderStopAndWait(cam); 
     62                                renderCoherentWithQueue(cam); 
    5863                                break; 
    5964                        default: 
     
    209214                        // wait if result not available 
    210215                        query->pullOcclusionQuery(&visiblePixels); 
    211                                  
     216         
    212217                        // node visible 
    213218                        if(visiblePixels > mVisibilityThreshold) 
     
    229234                // TODO: in rendervisibleobjects, the rendermode is changed by ogre itself => change this!! 
    230235                 
    231                 //setRenderingMode(MODE_QUERY); 
    232                 setRenderingMode(MODE_RENDER); 
     236                setRenderingMode(MODE_QUERY); 
     237                //setRenderingMode(MODE_RENDER); 
    233238 
    234239                // get next available test id 
     
    251256                //{ 
    252257                        bool enabled = (mode == MODE_RENDER); 
    253                          
     258//if(mode == MODE_QUERY){ 
    254259                        mRenderSystem->_setColourBufferWriteEnabled(enabled,  
    255260                                enabled, enabled, enabled); 
    256261                        mRenderSystem->_setDepthBufferWriteEnabled(enabled); 
    257262                        mRenderSystem->setLightingEnabled(enabled); 
    258  
     263//} 
    259264                        mQueryMode = mode; 
    260265                //} 
     
    346351        void OcclusionCullingSceneTraverser::deleteQueries( void ) 
    347352        { 
    348                 for(unsigned int i=0; i < (unsigned int)mOcclusionQueries.size(); i++) 
     353                for(unsigned int i=0; i < (unsigned int)mOcclusionQueries.size(); ++i) 
    349354                        delete mOcclusionQueries[i]; 
    350355 
     
    357362                for(int half = 0; half < 2; half ++) 
    358363                { 
    359                         //static Matrix4 xform[256]; 
    360                         //TODO: this should be full boudning box 
     364                        static Matrix4 xform[256]; 
     365                        //TODO: this should be full bounding box 
    361366                        SolidHalfBoundingBox *halfbox = getSolidHalfBoundingBox(half); 
    362367                        halfbox->setupBoundingBox(*box); 
    363  
    364                         mRenderSystem->_setWorldMatrix(Matrix4::IDENTITY); 
    365368                         
     369                        //mRenderSystem->_setWorldMatrix(Matrix4::IDENTITY); 
     370                        // Set world transformation 
     371                        /*halfbox->getWorldTransforms(xform); 
     372 
     373                        int numMatrices = halfbox->getNumWorldTransforms(); 
     374                        if (numMatrices > 1) 
     375                        { 
     376                                mRenderSystem->_setWorldMatrices(xform, numMatrices); 
     377                        } 
     378                        else 
     379                        { 
     380                                mRenderSystem->_setWorldMatrix(*xform); 
     381                        } 
     382                        mRenderSystem->setClipPlanes(halfbox->getClipPlanes()); 
     383 
    366384                        static RenderOperation ro; 
    367385 
     
    369387                        halfbox->getRenderOperation(ro); 
    370388                        ro.srcRenderable = halfbox;  
    371                         mRenderSystem->_render(ro); 
    372  
    373                         //mSceneManager->renderSingleObject(getSolidHalfBoundingBox(half),  
    374                         //      getSolidHalfBoundingBox(half)->getTechnique()->getPass(0), false); 
     389                        mRenderSystem->_render(ro);*/ 
     390 
     391                        mSceneManager->myrenderSingleObject(getSolidHalfBoundingBox(half),  
     392                                getSolidHalfBoundingBox(half)->getTechnique()->getPass(0), false); 
    375393                } 
    376394        } 
     
    410428                { 
    411429                        mOcclusionQueries.push_back(mRenderSystem->createHardwareOcclusionQuery()); 
     430                        //char *msg = "creating query!!\n"; OutputDebugString(msg); 
    412431                } 
    413432                 
Note: See TracChangeset for help on using the changeset viewer.