summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-05-28 09:47:55 +0200
committerKonstantin Käfer <mail@kkaefer.com>2014-05-28 09:47:55 +0200
commite304f6629fd4531cf490dd0485079e61c3758b12 (patch)
tree8c26a1c15f58c045d9c0f878447b70fcc5f2ccc5
parent90d02ae6739d1b9063870e75f189c1fae5af98a4 (diff)
downloadqtlocation-mapboxgl-e304f6629fd4531cf490dd0485079e61c3758b12.tar.gz
only change pass parameters if we actually need to
-rw-r--r--src/map/map.cpp2
-rw-r--r--src/renderer/painter.cpp16
-rw-r--r--src/renderer/painter_fill.cpp4
-rw-r--r--src/renderer/painter_prerender.cpp4
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);
}