move RenderPass check to the StyleLayer object

This commit is contained in:
Konstantin Käfer
2015-08-20 13:55:58 -04:00
parent 19d42acc84
commit 038b65eded
4 changed files with 40 additions and 43 deletions

View File

@@ -285,7 +285,7 @@ void Painter::renderPass(RenderPass pass_,
for (; it != end; ++it, i += increment) {
const auto& item = *it;
if (item.bucket && item.tile) {
if (item.hasRenderPass(pass)) {
if (item.layer.hasRenderPass(pass)) {
MBGL_DEBUG_GROUP(item.layer.id + " - " + std::string(item.tile->id));
setStrata(i * strataThickness);
prepareTile(*item.tile);
@@ -350,14 +350,6 @@ std::vector<RenderItem> Painter::determineRenderOrder(const Style& style) {
continue;
}
// Don't include invisible layers.
if (!layer.isVisible()) {
continue;
}
// Determine what render passes we need for this layer.
const RenderPass passes = determineRenderPasses(layer);
const auto& tiles = source->getTiles();
for (auto tile : tiles) {
assert(tile);
@@ -367,7 +359,7 @@ std::vector<RenderItem> Painter::determineRenderOrder(const Style& style) {
auto bucket = tile->data->getBucket(layer);
if (bucket) {
order.emplace_back(layer, tile, bucket, passes);
order.emplace_back(layer, tile, bucket);
}
}
}
@@ -375,28 +367,6 @@ std::vector<RenderItem> Painter::determineRenderOrder(const Style& style) {
return order;
}
RenderPass Painter::determineRenderPasses(const StyleLayer& layer) {
RenderPass passes = RenderPass::None;
if (layer.properties.is<FillProperties>()) {
const FillProperties &properties = layer.properties.get<FillProperties>();
const float alpha = properties.fill_color[3] * properties.opacity;
if (properties.antialias) {
passes |= RenderPass::Translucent;
}
if (!properties.image.from.empty() || alpha < 1.0f) {
passes |= RenderPass::Translucent;
} else {
passes |= RenderPass::Opaque;
}
} else {
passes |= RenderPass::Translucent;
}
return passes;
}
void Painter::renderBackground(const StyleLayer &layer_desc) {
// Note: This function is only called for textured background. Otherwise, the background color
// is created with glClear.