source:
GTP/trunk/App/Demos/Vis/FriendlyCulling/src/StopAndWaitTraverser.cpp
@
3271
Revision 3271, 972 bytes checked in by mattausch, 15 years ago (diff) |
---|
Rev | Line | |
---|---|---|
[2757] | 1 | #include "StopAndWaitTraverser.h" |
[2763] | 2 | #include "SceneEntity.h" |
[2757] | 3 | |
[2763] | 4 | |
[2776] | 5 | namespace CHCDemoEngine |
[2757] | 6 | { |
[2763] | 7 | |
8 | using namespace std; | |
9 | ||
10 | ||
11 | ||
[2767] | 12 | StopAndWaitTraverser::StopAndWaitTraverser() |
[2757] | 13 | { |
14 | } | |
15 | ||
16 | ||
[2767] | 17 | void StopAndWaitTraverser::Traverse() |
[2757] | 18 | { |
[2763] | 19 | while (!mDistanceQueue.empty()) |
[2757] | 20 | { |
[2763] | 21 | BvhNode *node = mDistanceQueue.top(); |
[2757] | 22 | mDistanceQueue.pop(); |
[2763] | 23 | |
[3271] | 24 | if (0 && !IsNodeGeometryVisible(node, 10)) |
[3259] | 25 | { |
26 | node->SetVisible(false); | |
27 | continue; | |
28 | } | |
29 | ||
[2763] | 30 | if (mBvh->IsWithinViewFrustum(node)) |
[2757] | 31 | { |
[2763] | 32 | // if intersects near plane assume visible and don't issue test |
[3065] | 33 | if (mBvh->IntersectsNearPlane(node)) |
[2757] | 34 | { |
35 | TraverseNode(node); | |
36 | } | |
37 | else | |
38 | { | |
[2792] | 39 | OcclusionQuery *query = IssueOcclusionQuery(node); |
[2763] | 40 | |
[3065] | 41 | const bool visible = (query->GetQueryResult() > mVisibilityThreshold); |
[2802] | 42 | |
[2795] | 43 | if (visible) |
[2757] | 44 | { |
45 | TraverseNode(node); | |
46 | } | |
[2764] | 47 | else |
48 | { | |
49 | ++ mStats.mNumQueryCulledNodes; | |
50 | } | |
[2763] | 51 | } |
[2757] | 52 | } |
53 | else | |
54 | { | |
[2764] | 55 | ++ mStats.mNumFrustumCulledNodes; |
[2765] | 56 | } |
[2757] | 57 | } |
58 | } | |
59 | ||
60 | } |
Note: See TracBrowser
for help on using the repository browser.