Ignore:
Timestamp:
06/27/08 13:33:46 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r2800 r2801  
    77using namespace std; 
    88 
     9// sort by alpha, in second instance per texture 
     10//#define SORT_ALPHA 
    911 
    1012namespace CHCDemoEngine 
     
    1214 
    1315 
    14 inline static bool IsLower(SceneEntity *ent1, SceneEntity *ent2) 
     16inline static bool CompTexture(SceneEntity *ent1, SceneEntity *ent2) 
    1517{ 
    1618        // group by texture size 
     
    2527 
    2628 
    27 inline static bool IsLower2(SceneEntity *ent1, SceneEntity *ent2) 
     29#ifdef SORT_ALPHA 
     30 
     31inline static bool CompMat(SceneEntity *ent1, SceneEntity *ent2) 
     32{  
     33        return ent1->GetMaterial()->IsAlphaTestEnabled() < ent2->GetMaterial()->IsAlphaTestEnabled(); 
     34} 
     35 
     36#else 
     37 
     38inline static bool CompMat(SceneEntity *ent1, SceneEntity *ent2) 
    2839{ 
    2940        return ent1->GetMaterial() < ent2->GetMaterial(); 
    3041} 
     42 
     43#endif 
    3144 
    3245 
     
    3750 
    3851RenderQueue::RenderQueue(RenderState *state): 
    39 mState(state) 
     52mState(state), mMinSizeForSorting(3) 
    4053{ 
    4154} 
     
    100113 
    101114        // show ordering by material 
    102         Debug << "\nmaterial ptr: " << endl; 
     115        Debug << "\nmaterial: " << endl; 
    103116         
    104117        for (sit = mEntities.begin(); sit != sit_end; ++ sit) 
    105118        { 
     119#ifdef SORT_ALPHA 
     120                Debug << (*sit)->GetMaterial()->IsAlphaTestEnabled() << " "; 
     121#else 
    106122                Debug << (*sit)->GetMaterial() << " "; 
     123#endif 
    107124        } 
    108125} 
     
    118135void RenderQueue::Sort() 
    119136{ 
     137#ifdef SORT_ALPHA 
     138        // sort by texture size 
     139        sort(mEntities.begin(), mEntities.end(), CompTexture); 
     140        // sort by alpha test enabled 
     141        stable_sort(mEntities.begin(), mEntities.end(), CompMat); 
     142#else 
    120143        // sort by material 
    121         sort(mEntities.begin(), mEntities.end(), IsLower2); 
     144        sort(mEntities.begin(), mEntities.end(), CompMat); 
    122145        // sort by texture size 
    123         stable_sort(mEntities.begin(), mEntities.end(), IsLower); 
     146        stable_sort(mEntities.begin(), mEntities.end(), CompTexture); 
     147#endif 
    124148} 
    125149 
Note: See TracChangeset for help on using the changeset viewer.