diff options
Diffstat (limited to 'src/mbgl/renderer/renderer_impl.cpp')
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 47 |
1 files changed, 1 insertions, 46 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index d6572712cd..46ee0ca973 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -331,52 +331,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { continue; } - const bool symbolLayer = layer->is<RenderSymbolLayer>(); - - auto sortedTiles = source->getRenderTiles(); - if (symbolLayer) { - // Sort symbol tiles in opposite y position, so tiles with overlapping symbols are drawn - // on top of each other, with lower symbols being drawn on top of higher symbols. - std::sort(sortedTiles.begin(), sortedTiles.end(), [&](const RenderTile& a, const RenderTile& b) { - Point<float> pa(a.id.canonical.x, a.id.canonical.y); - Point<float> pb(b.id.canonical.x, b.id.canonical.y); - - auto par = util::rotate(pa, parameters.state.getAngle()); - auto pbr = util::rotate(pb, parameters.state.getAngle()); - - return std::tie(b.id.canonical.z, par.y, par.x) < std::tie(a.id.canonical.z, pbr.y, pbr.x); - }); - } else { - std::sort(sortedTiles.begin(), sortedTiles.end(), - [](const auto& a, const auto& b) { return a.get().id < b.get().id; }); - // Don't render non-symbol layers for tiles that we're only holding on to for symbol fading - sortedTiles.erase(std::remove_if(sortedTiles.begin(), sortedTiles.end(), - [](const auto& tile) { return tile.get().tile.holdForFade(); }), - sortedTiles.end()); - } - - std::vector<std::reference_wrapper<RenderTile>> sortedTilesForInsertion; - const bool fillLayer = layer->is<RenderFillLayer>(); - const bool lineLayer = layer->is<RenderLineLayer>(); - - for (auto& sortedTile : sortedTiles) { - auto& tile = sortedTile.get(); - if (!tile.tile.isRenderable()) { - continue; - } - - auto bucket = tile.tile.getBucket(*layer->baseImpl); - if (bucket) { - sortedTilesForInsertion.emplace_back(tile); - tile.used = true; - - // We only need clipping when we're drawing fill or line layers. - if (fillLayer || lineLayer) { - tile.needsClipping = true; - } - } - } - layer->setRenderTiles(std::move(sortedTilesForInsertion)); + layer->setRenderTiles(source->getRenderTiles(), parameters.state); order.emplace_back(RenderItem { *layer, source }); } |