- Timestamp:
- 06/16/08 08:56:35 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/CHC_revisited/StopAndWaitTraverser.cpp
r2757 r2763 1 1 #include "StopAndWaitTraverser.h" 2 #include "SceneEntity.h" 3 2 4 3 5 namespace CHCDemo 4 6 { 7 8 using namespace std; 9 10 11 5 12 StopAndWaitTraverser::StopAndWaitTraverser(): RenderTraverser() 6 13 { … … 16 23 void StopAndWaitTraverser::Render() 17 24 { 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()) 20 31 { 21 HierarchyNode *node = mDistanceQueue.top();32 BvhNode *node = mDistanceQueue.top(); 22 33 mDistanceQueue.pop(); 23 mNumTraversedNodes ++;34 24 35 // interesting for the visualization, so rest and set 25 36 node->SetVisible(false); 37 //mNumTraversedNodes ++; 26 38 27 bool intersects; 28 29 if(InsideViewFrustum(node, intersects)) 39 if (mBvh->IsWithinViewFrustum(node)) 30 40 { 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) 37 43 { 38 node->SetVisible(true);39 44 TraverseNode(node); 40 45 } 41 46 else 42 47 { 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) 50 53 { 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; 52 60 TraverseNode(node); 53 61 } 54 else 55 { 56 mNumQueryCulledNodes ++; 57 } 58 } 62 } 59 63 } 60 64 else 61 65 { 62 mNumFrustumCulledNodes ++;66 //mNumFrustumCulledNodes ++; 63 67 } 68 //cout << "intersect: " << intersect << " bx " << node->GetBox() << endl; 64 69 } 65 #endif 70 71 mQueryHandler.ResetQueries(); 72 //std::cout << "traversed: " << traversed << std::endl; 66 73 } 67 74
Note: See TracChangeset
for help on using the changeset viewer.