diff options
Diffstat (limited to 'src/mbgl/renderer/render_orchestrator.cpp')
-rw-r--r-- | src/mbgl/renderer/render_orchestrator.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mbgl/renderer/render_orchestrator.cpp b/src/mbgl/renderer/render_orchestrator.cpp index 7df74cda71..c70ce63c76 100644 --- a/src/mbgl/renderer/render_orchestrator.cpp +++ b/src/mbgl/renderer/render_orchestrator.cpp @@ -342,12 +342,16 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree(const UpdatePar } } - for (auto& renderItem : layerRenderItems) { - RenderLayer& renderLayer = renderItem.layer; - renderLayer.prepare({renderItem.source, *imageManager, *patternAtlas, *lineAtlas, updateParameters.transformState}); + uint32_t i = static_cast<uint32_t>(layerRenderItems.size()) - 1; + for (auto it = layerRenderItems.begin(); it != layerRenderItems.end(); ++it, --i) { + RenderLayer& renderLayer = it->layer; + renderLayer.prepare({it->source, *imageManager, *patternAtlas, *lineAtlas, updateParameters.transformState}); if (renderLayer.needsPlacement()) { layersNeedPlacement.emplace_back(renderLayer); } + if (renderLayer.is3D() && renderTreeParameters->opaquePassCutOff == 0) { + renderTreeParameters->opaquePassCutOff = i; + } } // Symbol placement. { |