diff options
Diffstat (limited to 'indra/newview/lldrawpool.cpp')
-rw-r--r-- | indra/newview/lldrawpool.cpp | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index 013c698445..81f4e3d48f 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -254,6 +254,48 @@ void LLFacePool::dirtyTextures(const std::set<LLViewerFetchedTexture*>& textures { } +// static +S32 LLFacePool::drawLoop(face_array_t& face_list) +{ + S32 res = 0; + if (!face_list.empty()) + { + for (std::vector<LLFace*>::iterator iter = face_list.begin(); + iter != face_list.end(); iter++) + { + LLFace *facep = *iter; + res += facep->renderIndexed(); + } + } + return res; +} + +// static +S32 LLFacePool::drawLoopSetTex(face_array_t& face_list, S32 stage) +{ + S32 res = 0; + if (!face_list.empty()) + { + for (std::vector<LLFace*>::iterator iter = face_list.begin(); + iter != face_list.end(); iter++) + { + LLFace *facep = *iter; + gGL.getTexUnit(stage)->bind(facep->getTexture(), TRUE) ; + gGL.getTexUnit(0)->activate(); + res += facep->renderIndexed(); + } + } + return res; +} + +void LLFacePool::drawLoop() +{ + if (!mDrawFace.empty()) + { + drawLoop(mDrawFace); + } +} + void LLFacePool::enqueue(LLFace* facep) { mDrawFace.push_back(facep); @@ -401,7 +443,7 @@ void LLRenderPass::renderTexture(U32 type, U32 mask) void LLRenderPass::pushBatches(U32 type, U32 mask, BOOL texture, BOOL batch_textures) { - for (LLCullResult::drawinfo_iterator i = gPipeline.beginRenderMap(type); i != gPipeline.endRenderMap(type); ++i) + for (LLCullResult::drawinfo_list_t::iterator i = gPipeline.beginRenderMap(type); i != gPipeline.endRenderMap(type); ++i) { LLDrawInfo* pparams = *i; if (pparams) |