Ignore:
Timestamp:
08/07/06 16:12:39 (19 years ago)
Author:
szydlowski
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreKdTreeSceneManager.cpp

    r1183 r1185  
    4141mLeavePassesInQueue(0), 
    4242mDelayRenderTransparents(true), 
    43 mUseDepthPass(false), 
     43mUseDepthPass(true), 
    4444mIsDepthPassPhase(false), 
    4545mUseItemBuffer(false), 
     
    589589                } 
    590590        } 
     591 
     592        mVisibleNodes.clear(); 
    591593} 
    592594 
     
    695697                        if (mUseDepthPass) 
    696698                        { 
    697                                 //NodeList::const_iterator it, it_end = mVisible.end(); 
    698  
    699                                 ////getRenderQueue()->clear(); 
    700                                 //for (it = mVisible.begin(); it != it_end; ++ it) 
    701                                 //{ 
    702                                 //      (*it)->_addToRenderQueue(mCameraInProgress, getRenderQueue(), false); 
    703                                 //} 
     699                                KdRenderableList::const_iterator it, it_end = mVisibleNodes.end(); 
     700 
     701                                //getRenderQueue()->clear(); 
     702                                for (it = mVisibleNodes.begin(); it != it_end; ++ it) 
     703                                { 
     704                                        (*it)->queueObjects(mCameraInProgress, getRenderQueue(), false); 
     705                                } 
    704706                        } 
    705707#endif   
     
    722724} 
    723725 
    724 // TODO: looks too easy, verify if it works  
    725726void KdTreeSceneManager::_renderNodes(const KdRenderableList& nodelist, Camera * cam,  
    726727        bool onlyShadowCasters, int leavePassesInQueue) 
    727728{ 
    728729#ifdef GTP_VISIBILITY_MODIFIED_OGRE 
    729         _deleteRenderedQueueGroups(leavePassesInQueue); //try avoiding modified ogre code 
     730        RenderQueueGroup *currentGroup =  
     731                getRenderQueue()->getQueueGroup(getRenderQueue()->getDefaultQueueGroup()); 
     732        currentGroup->clear(leavePassesInQueue); 
    730733#else 
    731734        getRenderQueue()->clear(); 
     
    737740                if (!(*it)->isQueued(mHierarchyInterface->GetFrameId(), cam)) 
    738741                { 
     742                        mVisibleNodes.push_back(*it); 
    739743                        (*it)->queueObjects(cam, getRenderQueue(), onlyShadowCasters); 
    740744                } 
     
    742746        } 
    743747 
    744         SceneManager::_renderVisibleObjects(); 
    745  
     748        _renderQueueGroupObjects(currentGroup, QueuedRenderableCollection::OM_PASS_GROUP); 
    746749} 
    747750//----------------------------------------------------------------------- 
     
    946949                //} 
    947950 
    948                 if (mRenderNodesForViz || mRenderNodesContentForViz) 
    949                 { 
    950                         // HACK: change node material so it is better suited for visualization 
    951                         MaterialPtr nodeMat = MaterialManager::getSingleton().getByName("Core/NodeMaterial"); 
    952                         nodeMat->setAmbient(1, 1, 0); 
    953                         nodeMat->setLightingEnabled(true); 
    954                         nodeMat->getTechnique(0)->getPass(0)->removeAllTextureUnitStates(); 
    955  
    956                         //for (NodeList::iterator it = mVisible.begin(); it != mVisible.end(); ++it) 
    957                         //{ 
    958                         //      if (mRenderNodesForViz) 
    959                         //      { 
    960                         //              // render the leaf nodes 
    961                         //              if ((*it)->numAttachedObjects() &&  
    962                         //                      !(*it)->numChildren() &&  
    963                         //                      ((*it)->getAttachedObject(0)->getMovableType() == "Entity") && 
    964                         //                      (*it)->getAttachedObject(0)->isVisible()) 
    965                         //              { 
    966                         //                      getRenderQueue()->addRenderable((*it)); 
    967                         //              } 
    968  
    969                         //              // addbounding boxes instead of node itself 
    970                         //              //(*it)->_addBoundingBoxToQueue(getRenderQueue()); 
    971                         //      } 
    972                         //      // add renderables itself 
    973                         //      if (mRenderNodesContentForViz)  
    974                         //      { 
    975                         //              (*it)->_addToRenderQueue(cam, getRenderQueue(), false); 
    976                         //      } 
    977                         //} 
    978                 }        
     951        if (mRenderNodesForViz || mRenderNodesContentForViz) 
     952        { 
     953                // HACK: change node material so it is better suited for visualization 
     954                MaterialPtr nodeMat = MaterialManager::getSingleton().getByName("Core/NodeMaterial"); 
     955                nodeMat->setAmbient(1, 1, 0); 
     956                nodeMat->setLightingEnabled(true); 
     957                nodeMat->getTechnique(0)->getPass(0)->removeAllTextureUnitStates(); 
     958 
     959                for (KdRenderableList::iterator it = mVisibleNodes.begin(); it != mVisibleNodes.end(); ++it) 
     960                { 
     961                        if (mRenderNodesForViz) 
     962                        { 
     963                                KdTreeSceneNode * node = static_cast<KdTreeSceneNode *>(*it); 
     964                                // render the leaf nodes 
     965                                if (node->numAttachedObjects() &&  
     966                                        !node->numChildren() &&  
     967                                        (node->getAttachedObject(0)->getMovableType() == "Entity") && 
     968                                        node->getAttachedObject(0)->isVisible()) 
     969                                { 
     970                                        getRenderQueue()->addRenderable(node); 
     971                                } 
     972 
     973                                // addbounding boxes instead of node itself 
     974                                //(*it)->_addBoundingBoxToQueue(getRenderQueue()); 
     975                        } 
     976                        // add renderables itself 
     977                        if (mRenderNodesContentForViz)  
     978                        { 
     979                                (*it)->queueObjects(cam, getRenderQueue(), false); 
     980                        } 
     981                } 
     982        }        
    979983} 
    980984//----------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.