diff options
Diffstat (limited to 'src/mbgl/renderer/painter.cpp')
-rw-r--r-- | src/mbgl/renderer/painter.cpp | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp index 3832403cce..a085f33c4b 100644 --- a/src/mbgl/renderer/painter.cpp +++ b/src/mbgl/renderer/painter.cpp @@ -13,6 +13,7 @@ #include <mbgl/style/style.hpp> #include <mbgl/style/layer_impl.hpp> +#include <mbgl/style/layers/custom_layer_impl.hpp> #include <mbgl/tile/tile.hpp> #include <mbgl/renderer/layers/render_background_layer.hpp> @@ -178,12 +179,7 @@ void Painter::render(const Style& style, const FrameData& frame_, View& view) { frameHistory.upload(context, 0); for (const auto& item : order) { - for (const auto& tileRef : item.tiles) { - const auto& bucket = tileRef.get().tile.getBucket(*item.layer.baseImpl); - if (bucket && bucket->needsUpload()) { - bucket->upload(context); - } - } + item.layer.uploadBuckets(context, item.source); } } @@ -335,13 +331,7 @@ void Painter::renderPass(PaintParameters& parameters, context.setDepthMode(depthModeForSublayer(0, gl::DepthMode::ReadWrite)); context.clear(Color{ 0.0f, 0.0f, 0.0f, 0.0f }, 1.0f, {}); - for (auto& tileRef : item.tiles) { - auto& tile = tileRef.get(); - - MBGL_DEBUG_GROUP(context, layer.baseImpl->id + " - " + util::toString(tile.id)); - auto bucket = tile.tile.getBucket(*layer.baseImpl); - bucket->render(*this, parameters, layer, tile); - } + renderItem(parameters, item); parameters.view.bind(); context.bindTexture(extrusionTexture->getTexture()); @@ -363,12 +353,7 @@ void Painter::renderPass(PaintParameters& parameters, ExtrusionTextureProgram::PaintPropertyBinders{ properties, 0 }, properties, state.getZoom()); } else { - for (auto& tileRef : item.tiles) { - auto& tile = tileRef.get(); - MBGL_DEBUG_GROUP(context, layer.baseImpl->id + " - " + util::toString(tile.id)); - auto bucket = tile.tile.getBucket(*layer.baseImpl); - bucket->render(*this, parameters, layer, tile); - } + renderItem(parameters, item); } } @@ -377,6 +362,12 @@ void Painter::renderPass(PaintParameters& parameters, } } +void Painter::renderItem(PaintParameters& parameters, const RenderItem& item) { + RenderLayer& layer = item.layer; + MBGL_DEBUG_GROUP(context, layer.getID()); + layer.render(*this, parameters, item.source); +} + mat4 Painter::matrixForTile(const UnwrappedTileID& tileID) { mat4 matrix; state.matrixFor(matrix, tileID); |