From a1a952c2b32d04477f3e10c0e40976f71adfa550 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 16 May 2015 19:33:00 +0300 Subject: Improve a bit map draw speed. --- src/resources/map/map.cpp | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/src/resources/map/map.cpp b/src/resources/map/map.cpp index 4927485d4..e016654e8 100644 --- a/src/resources/map/map.cpp +++ b/src/resources/map/map.cpp @@ -341,7 +341,7 @@ void Map::draw(Graphics *const graphics, int scrollX, int scrollY) // Make sure actors are sorted ascending by Y-coordinate // so that they overlap correctly BLOCK_START("Map::draw sort") - mActors.sort(actorCompare); + mActors.sort(actorCompare); BLOCK_END("Map::draw sort") // update scrolling of all ambient layers @@ -404,20 +404,27 @@ void Map::draw(Graphics *const graphics, int scrollX, int scrollY) { if (mCachedDraw) { - FOR_EACH (Layers::iterator, it, mDrawUnderLayers) + if (updateFlag) { - MapLayer *const layer = *it; - if (updateFlag) + FOR_EACH (Layers::iterator, it, mDrawUnderLayers) { - layer->updateOGL(graphics, + (*it)->updateOGL(graphics, + startX, startY, + endX, endY, + scrollX, scrollY); + } + FOR_EACH (Layers::iterator, it, mDrawOverLayers) + { + (*it)->updateOGL(graphics, startX, startY, endX, endY, scrollX, scrollY); } - - layer->drawOGL(graphics); } + FOR_EACH (Layers::iterator, it, mDrawUnderLayers) + (*it)->drawOGL(graphics); + if (mFringeLayer) { mFringeLayer->setSpecialLayer(mSpecialLayer); @@ -430,18 +437,7 @@ void Map::draw(Graphics *const graphics, int scrollX, int scrollY) } FOR_EACH (Layers::iterator, it, mDrawOverLayers) - { - MapLayer *const layer = *it; - if (updateFlag) - { - layer->updateOGL(graphics, - startX, startY, - endX, endY, - scrollX, scrollY); - } - - layer->drawOGL(graphics); - } + (*it)->drawOGL(graphics); } else { -- cgit v1.2.3-70-g09d2