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); }