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

Revision 114, 1.6 KB checked in by mattausch, 19 years ago (diff)
RevLine 
[59]1#include "StopAndWaitCullingManager.h"
[94]2#include <OgreLogManager.h>
[59]3
4namespace GtpVisibility {
5
6//-----------------------------------------------------------------------
7void StopAndWaitCullingManager::RenderScene()
8{
[111]9        //InitFrame();
[94]10
[59]11        while (!mHierarchyInterface->GetQueue()->empty())
12        {
13                HierarchyNode *node = mHierarchyInterface->GetQueue()->top();
14                mHierarchyInterface->GetQueue()->pop();
[87]15                       
[59]16                // interesting for visualization purpose
17                mHierarchyInterface->SetNodeVisible(node, false);
18                mHierarchyInterface->SetLastVisited(node, mHierarchyInterface->GetFrameId());
19
20                bool intersects = false;
21
[74]22                if (!mHierarchyInterface->CheckFrustumVisible(node, intersects))
[112]23                {//if (mHierarchyInterface->mIsShadowPass)
[59]24                        mNumFrustumCulledNodes ++;
[114]25                        if (mVisualizeCulledNodes)
[113]26                        {
27                                mHierarchyInterface->VisualizeCulledNode(node, FRUSTUM_CULLED);
28                        }
[59]29                }
[74]30                else
[59]31                {
[103]32                        // if intersects near plane => skip occlusion query because wrong results possible
[74]33                        if (intersects)
34                        {
35                    mHierarchyInterface->SetNodeVisible(node, true);
36                                mHierarchyInterface->TraverseNode(node);
37                                continue;
38                        }
[59]39
[87]40                        mNumQueriesIssued ++;
41
[86]42                        unsigned int visiblePixels = 0;
43
[103]44                        mHierarchyInterface->IssueOcclusionQuery(node)->GetQueryResult(visiblePixels, true);
[92]45                       
[74]46                        // node visible
[86]47                        if (visiblePixels > mVisibilityThreshold)
[74]48                        {
49                                mHierarchyInterface->TraverseNode(node);
50                        }
51                        else
[112]52                        {       //if (mHierarchyInterface->mIsShadowPass)
[74]53                                mNumQueryCulledNodes ++;
[114]54                                if (mVisualizeCulledNodes)
[113]55                                {
56                                        mHierarchyInterface->VisualizeCulledNode(node, QUERY_CULLED);
57                                }
[74]58                        }
[59]59                }
60        }
61}
62} // namespace GtpVisibility
Note: See TracBrowser for help on using the repository browser.