//========================================================================== // // // //========================================================================== void GLDrawList::DrawSorted() { if (drawitems.Size()==0) return; if (!sorted) { GLRenderer->mVBO->Map(); MakeSortList(); sorted=DoSort(SortNodes[SortNodeStart]); GLRenderer->mVBO->Unmap(); } gl_RenderState.ClearClipSplit(); if (!(gl.flags & RFL_NO_CLIP_PLANES)) { glEnable(GL_CLIP_DISTANCE1); glEnable(GL_CLIP_DISTANCE2); } DoDrawSorted(sorted); if (!(gl.flags & RFL_NO_CLIP_PLANES)) { glDisable(GL_CLIP_DISTANCE1); glDisable(GL_CLIP_DISTANCE2); } gl_RenderState.ClearClipSplit(); }
//========================================================================== // // // //========================================================================== void HWDrawList::Sort(HWDrawInfo *di) { reverseSort = !!(di->Level->i_compatflags & COMPATF_SPRITESORT); SortZ = di->Viewpoint.Pos.Z; MakeSortList(); sorted = DoSort(di, SortNodes[SortNodeStart]); }
//========================================================================== // // // //========================================================================== void GLDrawList::DrawSorted() { if (drawitems.Size()==0) return; if (!sorted) { MakeSortList(); sorted=DoSort(SortNodes[SortNodeStart]); } DoDrawSorted(sorted); }