Ignore:
Timestamp:
06/18/08 17:33:16 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r2770 r2771  
    55#include "SceneEntity.h" 
    66#include "RenderState.h" 
     7 
     8 
     9using namespace std; 
    710 
    811 
     
    3538mVisibilityThreshold(0), 
    3639mBvh(NULL),  
    37 mIsQueryMode(false), 
    3840mUseOptimization(false), 
    3941mFrameId(-1), 
    4042mUseRenderQueue(false), 
    41 mAssumedVisibleFrames(10) 
     43mAssumedVisibleFrames(10), 
     44mMaxBatchSize(50) 
    4245{ 
    4346} 
     
    7881void RenderTraverser::RenderNode(BvhNode *node) 
    7982{ 
    80         if (mUseRenderQueue) 
    81         { 
    82                 int geometrySize; 
    83                 SceneEntity **geom = mBvh->GetGeometry(node, geometrySize); 
    84                 mRenderQueue.Enqueue(geom, geometrySize); 
    85                 mStats.mNumRenderedGeometry += geometrySize; 
    86         } 
    87         else 
    88         { 
    89                 if (mRenderState->SetState(RenderState::RENDER)) 
    90                         ++ mStats.mNumStateChanges; 
    91  
    92                 mStats.mNumRenderedGeometry += mBvh->Render(node, mRenderState); 
    93         }                
     83        if (node->GetLastRenderedFrame() != mFrameId) 
     84        { 
     85                //cout << "big error!!" << endl; 
     86                node->SetLastRenderedFrame(mFrameId); 
     87 
     88                if (mUseRenderQueue) 
     89                { 
     90                        int geometrySize; 
     91                        SceneEntity **geom = mBvh->GetGeometry(node, geometrySize); 
     92                        mRenderQueue.Enqueue(geom, geometrySize); 
     93                        mStats.mNumRenderedGeometry += geometrySize; 
     94                } 
     95                else 
     96                { 
     97                        if (mRenderState->SetState(RenderState::RENDER)) 
     98                                ++ mStats.mNumStateChanges; 
     99 
     100                        mStats.mNumRenderedGeometry += mBvh->Render(node, mRenderState); 
     101                }                
     102        } 
    94103} 
    95104 
     
    130139        } 
    131140 
    132         // if this node is a previous visible leaf => will be rendered anyway, thus we 
    133         // can also test with the real geometry  
     141        // if this node is a previous visible leaf: 
     142        // leaves will be rendered anyway => we can also test with the real geometry  
    134143        if (wasVisible && mUseOptimization) 
    135144        { 
    136                 mStats.mNumRenderedGeometry += mBvh->Render(node, mRenderState); 
     145                RenderNode(node); 
    137146        } 
    138147        else 
     
    151160 
    152161 
    153 void RenderTraverser::SetVisibilityThreshold(int threshold) 
    154 { 
    155         mVisibilityThreshold = threshold; 
    156 } 
    157  
    158  
    159 int RenderTraverser::GetVisibilityThreshold() const 
    160 { 
    161         return mVisibilityThreshold; 
    162 } 
    163  
    164  
    165 void RenderTraverser::SetUseOptimization(bool useOptimization) 
    166 { 
    167         mUseOptimization = useOptimization; 
    168 } 
    169  
    170  
    171  
    172162void RenderTraverser::RenderScene() 
    173163{ 
     
    182172        ++ mFrameId; 
    183173 
    184         mBvh->InitFrame(mCamera, mFrameId); 
     174        mBvh->InitFrame(); 
    185175 
    186176        mStats.Reset(); 
     
    195185        Traverse(); 
    196186 
    197         // render the rest of the objects 
    198         if (mUseRenderQueue) 
    199         { 
    200                 if (mRenderState->SetState(RenderState::RENDER)) 
    201                         ++ mStats.mNumStateChanges; 
    202  
    203                 mRenderQueue.Render(); 
    204                 mRenderQueue.Clear(); 
    205         } 
    206  
    207187        mRenderState->Reset(); 
    208188 
     
    221201} 
    222202 
    223 } 
     203 
     204 
     205 
     206void RenderTraverser::SetVisibilityThreshold(int threshold) 
     207{ 
     208        mVisibilityThreshold = threshold; 
     209} 
     210 
     211 
     212void RenderTraverser::SetUseOptimization(bool useOptimization) 
     213{ 
     214        mUseOptimization = useOptimization; 
     215} 
     216 
     217 
     218} 
Note: See TracChangeset for help on using the changeset viewer.