From e304f6629fd4531cf490dd0485079e61c3758b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20Ka=CC=88fer?= Date: Wed, 28 May 2014 09:47:55 +0200 Subject: [PATCH] only change pass parameters if we actually need to --- src/map/map.cpp | 2 -- src/renderer/painter.cpp | 16 ++++++++++------ src/renderer/painter_fill.cpp | 4 ++-- src/renderer/painter_prerender.cpp | 4 ---- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/map/map.cpp b/src/map/map.cpp index 8291fc2b9..835edac0b 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -548,7 +548,6 @@ void Map::renderLayers(const std::vector& layers) { painter.setStrata(i * strata_thickness); renderLayer(*it, Opaque); } - // painter.endPass(); if (debug::renderTree) { std::cout << std::string(--indent * 4, ' ') << "}" << std::endl; } @@ -566,7 +565,6 @@ void Map::renderLayers(const std::vector& layers) { painter.setStrata(i * strata_thickness); renderLayer(*it, Translucent); } - // painter.endPass(); if (debug::renderTree) { std::cout << std::string(--indent * 4, ' ') << "}" << std::endl; } diff --git a/src/renderer/painter.cpp b/src/renderer/painter.cpp index 1c568073a..82808f4d1 100644 --- a/src/renderer/painter.cpp +++ b/src/renderer/painter.cpp @@ -144,15 +144,19 @@ void Painter::clear() { } void Painter::setOpaque() { - pass = Opaque; - glDisable(GL_BLEND); - depthMask(true); + if (pass != Opaque) { + pass = Opaque; + glDisable(GL_BLEND); + depthMask(true); + } } void Painter::setTranslucent() { - pass = Translucent; - glEnable(GL_BLEND); - depthMask(false); + if (pass != Translucent) { + pass = Translucent; + glEnable(GL_BLEND); + depthMask(false); + } } void Painter::setStrata(float value) { diff --git a/src/renderer/painter_fill.cpp b/src/renderer/painter_fill.cpp index 5f014dc01..cd7b0780d 100644 --- a/src/renderer/painter_fill.cpp +++ b/src/renderer/painter_fill.cpp @@ -180,10 +180,10 @@ void Painter::renderFill(FillBucket& bucket, const std::string& layer_name, cons return vtxMatrix; }(); - pass = Opaque; + setOpaque(); renderFill(bucket, modifiedProperties, id, vtxMatrix); - pass = Translucent; + setTranslucent(); renderFill(bucket, modifiedProperties, id, vtxMatrix); diff --git a/src/renderer/painter_prerender.cpp b/src/renderer/painter_prerender.cpp index d112f7aad..7d4f7f9d9 100644 --- a/src/renderer/painter_prerender.cpp +++ b/src/renderer/painter_prerender.cpp @@ -27,8 +27,6 @@ void Painter::renderPrerenderedTexture(Bucket &bucket, const GenericProperties & const int buffer = 4096 * properties.prerenderBuffer; // draw the texture on a quad - depthMask(false); - useProgram(rasterShader->program); rasterShader->setMatrix(matrix); rasterShader->setOpacity(1); @@ -42,6 +40,4 @@ void Painter::renderPrerenderedTexture(Bucket &bucket, const GenericProperties & bucket.prerendered->bindTexture(); coveringRasterArray.bind(*rasterShader, tileStencilBuffer, BUFFER_OFFSET(0)); glDrawArrays(GL_TRIANGLES, 0, (GLsizei)tileStencilBuffer.index()); - - depthMask(true); }