Changeset 2841


Ignore:
Timestamp:
07/16/08 14:59:55 (16 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling/src
Files:
4 edited

Legend:

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

    r2840 r2841  
    5959 
    6060 
    61 bool RenderQueue::FitsInBucket(Shape *ent, size_t idx) const 
    62 { 
    63 #ifdef TODO 
    64         Material *mat = ent->GetMaterial(); 
    65 #else 
    66         Material *mat = NULL; 
    67 #endif 
     61bool RenderQueue::FitsInBucket(Shape *shape, size_t idx) const 
     62{ 
     63        Material *mat = shape->GetMaterial(); 
     64 
    6865        // test if entity belongs to this bucket 
    6966        // note: rather slows down the application for some reason!! 
    70         if (0 && mat->IsAlphaTestEnabled() != mBuckets[idx]->mAlphaTestEnabled) 
     67        if (mat->IsAlphaTestEnabled() != mBuckets[idx]->mAlphaTestEnabled) 
    7168                return false; 
    7269 
     
    9188void RenderQueue::Enqueue(SceneEntity *entity) 
    9289{ 
     90        static ShapeContainer shapes; 
     91        shapes.clear(); 
     92 
     93        entity->GetCurrentLODLevel(shapes) 
     94 
     95        ShapeContainer::const_iterator sit, sit_end = shapes.end(); 
     96 
     97        for (sit = shapes.begin(); sit != sit_end; ++ sit) 
     98        { 
     99                Enqueue(*sit); 
     100        } 
     101} 
     102 
     103 
     104void RenderQueue::Enqueue(Shape *shape) 
     105{ 
    93106        RenderQueueBucket *bucket; 
    94107        ++ mSize; 
    95 #ifdef TODO 
     108         
    96109        if (entity->mRenderQueueBucket) 
    97110        { 
     
    141154 
    142155        bucket->mEntities.push_back(entity); 
    143 #endif 
    144  
    145156} 
    146157 
     
    195206                        Material *mat = shape->GetMaterial(); 
    196207                        int tsize = mat->GetTexture() ? mat->GetTexture()->GetByteSize() : 0; 
    197 #ifdef TODO 
     208                         
    198209                        float dist = SqrMagnitude(shape->GetBoundingBox().Center() - mCamera->GetPosition()); 
    199 #else 
    200                         float dist = -1; 
    201 #endif 
     210                         
    202211                        Debug << "e: " << shape << " a: " << mat->IsAlphaTestEnabled() << " s: " << tsize << " d: " << dist << " " << endl; 
    203212                } 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderQueue.h

    r2839 r2841  
    7070protected: 
    7171 
     72        void Enqueue(Shape *shape); 
     73 
    7274        inline bool FitsInBucket(Shape *shape, size_t idx) const; 
    7375 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SceneEntity.cpp

    r2840 r2841  
    2222 
    2323 
    24 ShapeContainer *SceneEntity::GetCurrentLOD() 
     24void SceneEntity::GetCurrentLODLevel(ShapeContainer &shapes) 
    2525{ 
    26 /*      if (mLODInfos->empty()) 
    27                 return &mShapes; 
     26        ShapeContainer::const_iterator sit, sit_end; 
     27 
     28        if (mLODInfos->empty()) 
     29        { 
     30                sit = mShapes.begin(); sit_end = mShapes.end(); 
     31        } 
    2832 
    2933        float mDistance = 0.0f; 
     
    3135        int i = 0; 
    3236 
    33         for (int i = 0; i < mLODInfos->size(); ++ i) 
     37        LODInfo *info; 
     38 
     39        LODInfoContainer::const_iterator lid, lid_end = mLODInfos.end(); 
     40 
     41        for (lid = mLODInfos.begin(); lid != lid_end; ++ lid) 
    3442        { 
    35                 if ((mLODInfos*)[i].mDistance > mDistance) 
    36                         return &(mLODInfos*)[i].mShapes; 
     43                info = *lid; 
     44 
     45                if (info->mDistance > mDistance) 
     46                { 
     47                        sit = info->mShapes.begin();  
     48                        sit_end = info->mShapes.end(); 
     49                        break; 
     50                } 
    3751        } 
    3852 
    39         return &(mLODInfos->last().mShapes); 
    40         */ 
    41         return NULL; 
     53        for (; sit != sit_end; ++ sit) 
     54        { 
     55                shapes.push_back(*sit); 
     56        } 
    4257} 
    4358 
     
    4863        float mDistance = 0.0f; 
    4964 
    50         ShapeContainer *shapes; 
     65        static ShapeContainer shapes; 
     66        shapes.clear(); 
    5167 
    52         shapes = GetCurrentLOD(); 
     68        GetCurrentLODLevel(shapes); 
    5369 
    54         for (int i = 0; i < shapes->size(); ++ i) 
     70        ShapeContainer::const_iterator sit, sit_end = shapes.end(); 
     71 
     72        for (; sit != sit_end; ++ sit) 
    5573        { 
    56                 (*shapes)[i]->Render(state); 
     74                (*sit)->Render(state); 
    5775        } 
    5876} 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SceneEntity.h

    r2840 r2841  
    6363 
    6464 
     65        void GetCurrentLODLevel(ShapeContainer &shapes); 
     66 
    6567protected: 
    6668 
    67         ShapeContainer *GetCurrentLOD(); 
    6869 
    6970        /// transform matrix  
Note: See TracChangeset for help on using the changeset viewer.