only change pass parameters if we actually need to

This commit is contained in:
Konstantin Käfer
2014-05-28 09:47:55 +02:00
parent 90d02ae673
commit e304f6629f
4 changed files with 12 additions and 14 deletions

View File

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

View File

@@ -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) {

View File

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

View File

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