Ignore:
Timestamp:
05/09/05 01:24:02 (19 years ago)
Author:
mattausch
Message:
 
Location:
trunk/VUT/GtpVisibility/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibility/src/CoherentHierarchicalCullingManager.cpp

    r86 r87  
    77void CoherentHierarchicalCullingManager::RenderScene() 
    88{ 
    9         mNumFrustumCulledNodes = mNumQueryCulledNodes = 0; 
    10 //      OutputDebugString("Coherent Culling\n"); 
     9        InitFrame(); 
    1110 
    1211        QueryQueue queryQueue; 
    1312        unsigned int visiblePixels = 0; 
    1413        bool isAvailable = false; 
    15  
     14         
    1615        //-- PART 1: process finished occlusion queries 
    1716        while (!mHierarchyInterface->GetQueue()->empty() || !queryQueue.empty()) 
     
    2120                                                                        mHierarchyInterface->GetQueue()->empty())) 
    2221                { 
     22            //if (mHierarchyInterface->GetQueue()->empty())OutputDebugString("empty\n"); 
     23                                                                 
    2324                        HierarchyNode *node = queryQueue.front().first; 
    2425                                                 
     
    3536                        } 
    3637                } 
    37  
     38                 
    3839                //-- PART 2: hierarchical traversal 
    3940                if (!mHierarchyInterface->GetQueue()->empty()) 
     
    6768                                 
    6869                                // identify nodes that we cannot skip queries for 
    69                                 bool mustQuery = !wasVisible || mHierarchyInterface->HasGeometry(node) ||  
    70                                         mHierarchyInterface->IsLeaf(node); 
     70                                // geometry not only in leaves => test for renderable geometry 
     71                                bool issueQuery = !wasVisible || mHierarchyInterface->HasGeometry(node); 
     72                                        //mHierarchyInterface->IsLeaf(node); 
    7173 
    7274                                // reset node's visibility classification  
     
    7678                                mHierarchyInterface->SetLastVisited(node, mHierarchyInterface->GetFrameId()); 
    7779                         
    78                                 // skip testing previously visible interior nodes 
    79                                 if (mustQuery) 
     80                                // skip testing previously visible nodes without geometry 
     81                                if (issueQuery) 
    8082                                { 
    81                                         queryQueue.push(QueryPair(node,  
    82                                                 mHierarchyInterface->IssueOcclusionQuery(node, wasVisible))); 
     83                                        mNumQueriesIssued ++; 
     84 
     85                                        queryQueue.push(QueryPair(node, mHierarchyInterface-> 
     86                                                IssueOcclusionQuery(node, wasVisible))); 
    8387                                } 
    8488                                         
  • trunk/VUT/GtpVisibility/src/CullingManager.cpp

    r74 r87  
    66CullingManager::CullingManager(): 
    77mHierarchyInterface(NULL), mVisibilityThreshold(0), mNumQueryCulledNodes(0),  
    8 mNumFrustumCulledNodes(0) 
     8mNumFrustumCulledNodes(0), mNumQueriesIssued(0) 
    99{ 
    1010} 
     
    2929        return mNumQueryCulledNodes; 
    3030} 
     31//----------------------------------------------------------------------- 
     32unsigned int CullingManager::GetNumQueriesIssued() 
     33{ 
     34        return mNumQueriesIssued; 
     35} 
     36//----------------------------------------------------------------------- 
     37void CullingManager::InitFrame() 
     38{ 
     39        mNumFrustumCulledNodes = mNumQueryCulledNodes = mNumQueriesIssued = 0; 
     40} 
    3141} // namespace GtpVisibility 
  • trunk/VUT/GtpVisibility/src/FrustumCullingManager.cpp

    r86 r87  
    77void FrustumCullingManager::RenderScene() 
    88{ 
    9         mNumFrustumCulledNodes = mNumQueryCulledNodes = 0; 
    10         //OutputDebugString("Frustum Culling\n"); 
     9        InitFrame(); 
    1110 
    1211        while (!mHierarchyInterface->GetQueue()->empty()) 
  • trunk/VUT/GtpVisibility/src/StopAndWaitCullingManager.cpp

    r86 r87  
    77void StopAndWaitCullingManager::RenderScene() 
    88{ 
    9         mNumFrustumCulledNodes = mNumQueryCulledNodes = 0; 
    10         //OutputDebugString("Stop and Wait Culling\n"); 
    11  
     9        InitFrame(); 
     10                         
    1211        while (!mHierarchyInterface->GetQueue()->empty()) 
    1312        { 
    1413                HierarchyNode *node = mHierarchyInterface->GetQueue()->top(); 
    1514                mHierarchyInterface->GetQueue()->pop(); 
    16                  
     15                         
    1716                // interesting for visualization purpose 
    1817                mHierarchyInterface->SetNodeVisible(node, false); 
     
    3534                        } 
    3635 
     36                        mNumQueriesIssued ++; 
     37 
    3738                        unsigned int visiblePixels = 0; 
    3839 
Note: See TracChangeset for help on using the changeset viewer.