- Timestamp:
- 06/22/08 05:24:22 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderQueue.cpp
r2782 r2795 4 4 #include "Texture.h" 5 5 #include "Material.h" 6 7 6 8 7 using namespace std; … … 22 21 int tsize2 = t2 ? t2->GetByteSize() : 0; 23 22 24 // if texture size equal, group by material 25 if (tsize1 == tsize2) 26 return ent1->GetMaterial() < ent2->GetMaterial(); 23 return tsize1 < tsize2; 24 } 27 25 28 return tsize1 < tsize2; 26 27 inline static bool IsLower2(SceneEntity *ent1, SceneEntity *ent2) 28 { 29 return ent1->GetMaterial() < ent2->GetMaterial(); 29 30 } 30 31 … … 63 64 { 64 65 if (mEntities.size() >= mMinSizeForSorting) 66 { 67 sortTimer.Entry(); 65 68 Sort(); 69 sortTimer.Exit(); 70 } 66 71 67 72 SceneEntityContainer::const_iterator sit, sit_end = mEntities.end(); … … 72 77 ent->Render(mState); 73 78 } 79 80 //Print(); 74 81 } 82 83 84 void RenderQueue::Print() 85 { 86 SceneEntityContainer::const_iterator sit, sit_end = mEntities.end(); 87 88 Debug << "\nrq size: " << GetSize() << endl; 89 Debug << "texture size: " << endl; 90 // show ordering by texture size 91 for (sit = mEntities.begin(); sit != sit_end; ++ sit) 92 { 93 SceneEntity *ent = *sit; 94 Texture *t = ent->GetMaterial()->GetTexture(); 95 int tsize = t ? t->GetByteSize() : 0; 96 Debug << tsize << " "; 97 } 98 99 // show ordering by material 100 Debug << "\nmaterial ptr: " << endl; 75 101 102 for (sit = mEntities.begin(); sit != sit_end; ++ sit) 103 { 104 Debug << (*sit)->GetMaterial() << " "; 105 } 106 } 107 108 109 void RenderQueue::Apply() 110 { 111 Render(); 112 Clear(); 113 } 114 76 115 77 116 void RenderQueue::Sort() 78 117 { 79 sort(mEntities.begin(), mEntities.end(), IsLower); 118 // sort by material 119 sort(mEntities.begin(), mEntities.end(), IsLower2); 120 // sort by texture size 121 stable_sort(mEntities.begin(), mEntities.end(), IsLower); 80 122 } 81 123
Note: See TracChangeset
for help on using the changeset viewer.