Ignore:
Timestamp:
06/16/08 08:56:35 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/CHC_revisited/StopAndWaitTraverser.cpp

    r2757 r2763  
    11#include "StopAndWaitTraverser.h" 
     2#include "SceneEntity.h" 
     3 
    24 
    35namespace CHCDemo 
    46{ 
     7 
     8using namespace std; 
     9 
     10 
     11 
    512StopAndWaitTraverser::StopAndWaitTraverser(): RenderTraverser()  
    613{ 
     
    1623void StopAndWaitTraverser::Render() 
    1724{ 
    18 #if 0 
    19         while(! mDistanceQueue.empty()) 
     25        mRenderState->mTexturesEnabled = false; 
     26        mDistanceQueue.push(mBvh->GetRoot()); 
     27 
     28 
     29        int traversed = 0; 
     30        while (!mDistanceQueue.empty()) 
    2031        { 
    21                 HierarchyNode *node = mDistanceQueue.top(); 
     32                BvhNode *node = mDistanceQueue.top(); 
    2233                mDistanceQueue.pop(); 
    23                 mNumTraversedNodes ++; 
     34         
    2435                // interesting for the visualization, so rest and set 
    2536                node->SetVisible(false); 
     37                //mNumTraversedNodes ++; 
    2638 
    27                 bool intersects; 
    28                  
    29                 if(InsideViewFrustum(node, intersects)) 
     39                if (mBvh->IsWithinViewFrustum(node)) 
    3040                { 
    31                         // update node's visited flag 
    32                         node->SetLastVisited(mFrameID); 
    33  
    34                         // for near plane intersecting abbs possible  
    35                         // wrong results => skip occlusion query 
    36                         if(intersects) 
     41                        // if intersects near plane assume visible and don't issue test 
     42                        if (mBvh->CalcDistance(node) < 0.1f) 
    3743                        { 
    38                                 node->SetVisible(true); 
    3944                                TraverseNode(node); 
    4045                        } 
    4146                        else 
    4247                        { 
    43                                 IssueOcclusionQuery(node, false); 
    44                                  
    45                                 // wait if result not available 
    46                                 int visiblePixels = GetOcclusionQueryResult(node); 
    47                                  
    48                                 // node visible 
    49                                 if(visiblePixels > mVisibilityThreshold) 
     48                                OcclusionQuery *query = IssueOcclusionQuery(node, false); 
     49 
     50                                int visiblePixels = query->GetQueryResult(); 
     51 
     52                                if (visiblePixels > 0) 
    5053                                { 
    51                                         node->SetVisible(true); 
     54                                        cout<< "visible: " << visiblePixels << endl; 
     55                                        // update node's visited flag => needed for rendering 
     56                                        // so set it also here 
     57                                        //node->SetLastVisited(mFrameID); 
     58                                        //node->SetVisible(true); 
     59                                        ++ traversed; 
    5260                                        TraverseNode(node); 
    5361                                } 
    54                                 else 
    55                                 { 
    56                                         mNumQueryCulledNodes ++; 
    57                                 } 
    58                         }                                        
     62                        } 
    5963                } 
    6064                else 
    6165                { 
    62                         mNumFrustumCulledNodes ++; 
     66                        //mNumFrustumCulledNodes ++; 
    6367                } 
     68                //cout << "intersect: " << intersect << " bx " << node->GetBox() << endl; 
    6469        } 
    65 #endif 
     70 
     71        mQueryHandler.ResetQueries(); 
     72        //std::cout << "traversed: " << traversed << std::endl; 
    6673} 
    6774 
Note: See TracChangeset for help on using the changeset viewer.