source: trunk/VUT/GtpVisibility/src/StopAndWaitCullingManager.cpp @ 86

Revision 86, 1.3 KB checked in by mattausch, 19 years ago (diff)
Line 
1#include "StopAndWaitCullingManager.h"
2#include <windows.h>
3
4namespace GtpVisibility {
5
6//-----------------------------------------------------------------------
7void StopAndWaitCullingManager::RenderScene()
8{
9        mNumFrustumCulledNodes = mNumQueryCulledNodes = 0;
10        //OutputDebugString("Stop and Wait Culling\n");
11
12        while (!mHierarchyInterface->GetQueue()->empty())
13        {
14                HierarchyNode *node = mHierarchyInterface->GetQueue()->top();
15                mHierarchyInterface->GetQueue()->pop();
16               
17                // interesting for visualization purpose
18                mHierarchyInterface->SetNodeVisible(node, false);
19                mHierarchyInterface->SetLastVisited(node, mHierarchyInterface->GetFrameId());
20
21                bool intersects = false;
22
23                if (!mHierarchyInterface->CheckFrustumVisible(node, intersects))
24                {
25                        mNumFrustumCulledNodes ++;
26                }
27                else
28                {
29                        //if intersects near plane => skip occlusion query because wrong results possible
30                        if (intersects)
31                        {
32                    mHierarchyInterface->SetNodeVisible(node, true);
33                                mHierarchyInterface->TraverseNode(node);
34                                continue;
35                        }
36
37                        unsigned int visiblePixels = 0;
38
39                        mHierarchyInterface->IssueOcclusionQuery(node)->GetQueryResult(visiblePixels, true);
40
41                        // node visible
42                        if (visiblePixels > mVisibilityThreshold)
43                        {
44                                mHierarchyInterface->TraverseNode(node);
45                        }
46                        else
47                        {
48                                mNumQueryCulledNodes ++;
49                        }
50                }
51        }
52}
53} // namespace GtpVisibility
Note: See TracBrowser for help on using the repository browser.