Ignore:
Timestamp:
03/26/07 18:49:17 (17 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r2289 r2292  
    22#include <time.h> 
    33#include "CullingLogManager.h" 
     4#include <vector> 
     5//#include <iostream> 
     6#include <sstream> 
     7 
     8 
     9using namespace std; 
    410 
    511 
     
    1218        SetAssumedVisibility(0); 
    1319        // initialise random generator in case we use assumed visibility 
    14         srand(time(NULL)); 
     20        //srand(time(NULL)); 
    1521 
    1622        mRandomCandidates = R_CANDIDATES; 
     
    2228        SetAssumedVisibility(assumedVisibility); 
    2329        // initialise random generator in case we use assumed visibility 
    24         srand(time(NULL)); 
     30        //srand(time(NULL)); 
    2531 
    2632        mRandomCandidates = R_CANDIDATES; 
     
    2935void RandomUpdateCullingManager::RenderScene() 
    3036{ 
    31         CullingLogManager::GetSingleton()->LogMessage("ruc"); 
     37        if (0) CullingLogManager::GetSingleton()->LogMessage("ruc"); 
    3238 
    3339        QueryQueue queryQueue; 
     
    3743        //-- PART 1: process finished occlusion queries 
    3844 
    39         // update the fully visible classifications 
    40         mHierarchyInterface->DetermineFullVisibility(mHierarchyInterface->GetHierarchyRoot()); 
    41  
    42         //mHierarchyInterface->TraverseNode2(mHierarchyInterface->GetHierarchyRoot()); 
    43          
    44 #if 1 
    4545        while (!mHierarchyInterface->GetQueue()->empty() || !queryQueue.empty()) 
    4646        { 
     
    121121                                if (mHierarchyInterface->IsNodeFullyVisible(node)) 
    122122                                { 
     123#if 1 
    123124                                        // node fully visible => test only random leaves 
    124125                                        for (int i = 0; i < mRandomCandidates; ++ i) 
     
    138139                                                        mHierarchyInterface->IssueNodeOcclusionQuery(node))); 
    139140                                        } 
    140  
    141                                         mHierarchyInterface->TraverseNode2(node); 
     141#else 
     142                                        // test all leaves for visibility changes 
     143                                        HierarchyNodeContainer mynodes; 
     144                                        mHierarchyInterface->CollectLeaves(node, mynodes); 
     145 
     146                                        HierarchyNodeContainer::const_iterator nit, nit_end = mynodes.end(); 
     147 
     148                                        for (nit = mynodes.begin(); nit != nit_end; ++ nit) 
     149                                        { 
     150                                                HierarchyNode *leaf = *nit; 
     151                                                mHierarchyInterface->SetNodeVisible(leaf, false); 
     152 
     153                                                // update node's visited flag 
     154                                                mHierarchyInterface->SetLastVisited(leaf, mHierarchyInterface->GetFrameId()); 
     155 
     156                                                queryQueue.push(QueryPair(leaf,  
     157                                                        mHierarchyInterface->IssueNodeOcclusionQuery(node))); 
     158                                        } 
     159#endif 
     160                                        mHierarchyInterface->RenderNodeRecursive(node); 
    142161 
    143162                                        continue; 
     
    173192                } 
    174193        } 
    175 #endif 
     194 
    176195        //while (!mHierarchyInterface->GetQueue()->empty()) 
    177196        //      mHierarchyInterface->GetQueue()->pop(); 
    178          
     197 
     198        // update the fully visible classifications 
     199        // TODO: this should be done during traversal! 
     200        mHierarchyInterface->DetermineFullVisibility(mHierarchyInterface->GetHierarchyRoot()); 
    179201} 
    180202//----------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.