diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-11-01 16:14:33 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-11-08 18:09:58 +0100 |
commit | bcdbbbcac2e331ea3a23085b1e0f5a0f5d25e0a7 (patch) | |
tree | f7961bcbb800b781a980e9e387d8f191d22051ca /src | |
parent | 3b38cf48b706ace413bee44e8d2742710c9425b4 (diff) | |
download | qtlocation-mapboxgl-bcdbbbcac2e331ea3a23085b1e0f5a0f5d25e0a7.tar.gz |
[core] don't assign clip IDs to tiles that aren't rendered
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/algorithm/generate_clip_ids_impl.hpp | 7 | ||||
-rw-r--r-- | src/mbgl/renderer/render_tile.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/style/source_impl.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/style/source_impl.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/style/style.cpp | 1 |
5 files changed, 14 insertions, 3 deletions
diff --git a/src/mbgl/algorithm/generate_clip_ids_impl.hpp b/src/mbgl/algorithm/generate_clip_ids_impl.hpp index 47f7df12f9..9b550fcbba 100644 --- a/src/mbgl/algorithm/generate_clip_ids_impl.hpp +++ b/src/mbgl/algorithm/generate_clip_ids_impl.hpp @@ -15,6 +15,10 @@ void ClipIDGenerator::update(Renderables& renderables) { for (auto it = renderables.begin(); it != end; it++) { auto& tileID = it->first; auto& renderable = it->second; + if (!renderable.used) { + continue; + } + renderable.clip = {}; Leaf leaf{ renderable.clip }; @@ -58,6 +62,9 @@ void ClipIDGenerator::update(Renderables& renderables) { uint8_t count = 1; for (auto& pair : renderables) { auto& renderable = pair.second; + if (!renderable.used) { + continue; + } renderable.clip.mask |= mask; // Assign only to clip IDs that have no value yet. diff --git a/src/mbgl/renderer/render_tile.hpp b/src/mbgl/renderer/render_tile.hpp index 74669faaf9..e2e0c3d656 100644 --- a/src/mbgl/renderer/render_tile.hpp +++ b/src/mbgl/renderer/render_tile.hpp @@ -24,6 +24,7 @@ public: Tile& tile; ClipID clip; mat4 matrix; + bool used = false; mat4 translatedMatrix(const std::array<float, 2>& translate, style::TranslateAnchorType anchor, diff --git a/src/mbgl/style/source_impl.cpp b/src/mbgl/style/source_impl.cpp index 75668fc3b0..d31a6bf5a4 100644 --- a/src/mbgl/style/source_impl.cpp +++ b/src/mbgl/style/source_impl.cpp @@ -70,11 +70,13 @@ void Source::Impl::startRender(algorithm::ClipIDGenerator& generator, void Source::Impl::finishRender(Painter& painter) { for (auto& pair : renderTiles) { auto& tile = pair.second; - painter.renderTileDebug(tile); + if (tile.used) { + painter.renderTileDebug(tile); + } } } -const std::map<UnwrappedTileID, RenderTile>& Source::Impl::getRenderTiles() const { +std::map<UnwrappedTileID, RenderTile>& Source::Impl::getRenderTiles() { return renderTiles; } diff --git a/src/mbgl/style/source_impl.hpp b/src/mbgl/style/source_impl.hpp index 1041ebffed..e6340ae1cb 100644 --- a/src/mbgl/style/source_impl.hpp +++ b/src/mbgl/style/source_impl.hpp @@ -63,7 +63,7 @@ public: const TransformState&); void finishRender(Painter&); - const std::map<UnwrappedTileID, RenderTile>& getRenderTiles() const; + std::map<UnwrappedTileID, RenderTile>& getRenderTiles(); std::unordered_map<std::string, std::vector<Feature>> queryRenderedFeatures(const QueryParameters&) const; diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp index f14be51392..acbc949b4c 100644 --- a/src/mbgl/style/style.cpp +++ b/src/mbgl/style/style.cpp @@ -404,6 +404,7 @@ RenderData Style::getRenderData(MapDebugOptions debugOptions) const { auto bucket = tile.tile.getBucket(*layer); if (bucket) { result.order.emplace_back(*layer, &tile, bucket); + tile.used = true; } } } |