diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2014-05-28 09:47:55 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2014-05-28 09:47:55 +0200 |
commit | e304f6629fd4531cf490dd0485079e61c3758b12 (patch) | |
tree | 8c26a1c15f58c045d9c0f878447b70fcc5f2ccc5 | |
parent | 90d02ae6739d1b9063870e75f189c1fae5af98a4 (diff) | |
download | qtlocation-mapboxgl-e304f6629fd4531cf490dd0485079e61c3758b12.tar.gz |
only change pass parameters if we actually need to
-rw-r--r-- | src/map/map.cpp | 2 | ||||
-rw-r--r-- | src/renderer/painter.cpp | 16 | ||||
-rw-r--r-- | src/renderer/painter_fill.cpp | 4 | ||||
-rw-r--r-- | 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 8291fc2b96..835edac0b0 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -548,7 +548,6 @@ void Map::renderLayers(const std::vector<LayerDescription>& 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<LayerDescription>& 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 1c568073a4..82808f4d13 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 5f014dc014..cd7b0780df 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 d112f7aadf..7d4f7f9d93 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); } |