Ignore:
Timestamp:
09/29/08 10:33:56 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r2978 r2980  
    4040#include "SkyPreetham.h" 
    4141#include "Texture.h" 
     42#include "EntityMerger.h" 
    4243 
    4344 
     
    5859/// the renderable scene geometry 
    5960SceneEntityContainer sceneEntities; 
     61SceneEntityContainer sceneEntities2; 
    6062// traverses and renders the hierarchy 
    6163RenderTraverser *traverser = NULL; 
     
    262264 
    263265 
    264  
    265266///////// 
    266267//-- cg stuff 
     
    449450        } 
    450451 
    451          
    452          
     452        SceneEntityContainer::const_iterator sit, sit_end = sceneEntities.end(); 
     453 
     454        int merged = 0; 
     455         
     456        SceneEntity *oldEnt = NULL; 
     457 
     458        cout << "merging entities .. " << endl; 
     459 
     460        for (sit = sceneEntities.begin(); sit < sit_end; ++ sit) 
     461        { 
     462                SceneEntity *newEnt = (*sit); 
     463 
     464                if (!newEnt->GetTransform()->IsIdentity()) 
     465                { 
     466                        sceneEntities2.push_back(newEnt); 
     467                        continue; 
     468                } 
     469 
     470                if (oldEnt) 
     471                { 
     472                        EntityMerger merger(newEnt, oldEnt); 
     473                        SceneEntity *ent = merger.Merge(); 
     474 
     475                        sceneEntities2.push_back(ent); 
     476 
     477                        oldEnt = NULL; 
     478 
     479                        ++ merged; 
     480                } 
     481                else 
     482                { 
     483                        oldEnt = newEnt; 
     484                } 
     485        } 
     486 
     487        if (oldEnt && oldEnt->GetTransform()->IsIdentity()) 
     488                sceneEntities2.push_back(oldEnt); 
     489 
     490        cout << "merged " << merged << " of " << (int)sceneEntities.size() << " entities " << endl; 
     491 
    453492        // set far plane based on scene extent 
    454493        farDist = 10.0f * Magnitude(bvh->GetBox().Diagonal()); 
     
    611650{ 
    612651        PrintGLerror("fbo start"); 
     652 
    613653        // this fbo basicly stores the scene information we get from standard rendering of a frame 
    614654        // we store colors, normals, positions (for the ssao) 
     
    10961136        { 
    10971137                // actually render the scene geometry using the specified algorithm 
    1098                 traverser->RenderScene(); 
     1138                //traverser->RenderScene(); 
     1139 
    10991140        /* 
    11001141                state.Reset(); 
    11011142                aeroplane->Render(&state); 
    1102  
    1103         SceneEntityContainer::const_iterator sit, sit_end = sceneEntities.end(); 
     1143*/ 
     1144 
     1145#if 0 
     1146                SceneEntityContainer::const_iterator sit, sit_end = sceneEntities.end(); 
    11041147 
    11051148                for (sit = sceneEntities.begin(); sit != sit_end; ++ sit) 
    1106                 { 
    11071149                        renderQueue->Enqueue(*sit); 
    1108                 } 
    1109  
     1150#else 
     1151 
     1152                SceneEntityContainer::const_iterator sit, sit_end = sceneEntities2.end(); 
     1153 
     1154                for (sit = sceneEntities2.begin(); sit != sit_end; ++ sit) 
     1155                        renderQueue->Enqueue(*sit); 
     1156#endif 
    11101157                renderQueue->Apply(); 
    1111                 */ 
    11121158        } 
    11131159 
     
    11151161        ///////// 
    11161162        //-- do the rest of the rendering 
    1117  
    11181163         
    11191164        // reset depth pass and render visible objects 
     
    17721817        DEL_PTR(fbo); 
    17731818        DEL_PTR(ssaoShader); 
     1819 
     1820        CLEAR_CONTAINER(sceneEntities2); 
    17741821 
    17751822        if (sCgMrtVertexProgram) 
     
    20852132        state.SetUseAlphaToCoverage(false); 
    20862133 
    2087         // change CHC++ set of state variables (must be done for each change of camera because 
     2134        // change CHC++ set of state variables  
     2135        // this must be done for each change of camera because 
    20882136        // otherwise the temporal coherency is broken 
    20892137        BvhNode::SetCurrentState(1); 
Note: See TracChangeset for help on using the changeset viewer.