diff options
author | Mikko Pulkki <mikko.pulkki@mapbox.com> | 2020-03-23 18:21:13 +0200 |
---|---|---|
committer | Mikko Pulkki <55925868+mpulkki-mapbox@users.noreply.github.com> | 2020-04-06 12:10:21 +0300 |
commit | d0c103fa8f0bade2be56d50a745f16b4e9ed6b29 (patch) | |
tree | e41956f80cfd63d7ab4e154c9785b39e7e6c99d4 /src/mbgl/algorithm | |
parent | 69dc210598ff8319de53bb603438ba89d47d6229 (diff) | |
download | qtlocation-mapboxgl-d0c103fa8f0bade2be56d50a745f16b4e9ed6b29.tar.gz |
Refactor tileCover to support lod tiles
Diffstat (limited to 'src/mbgl/algorithm')
-rw-r--r-- | src/mbgl/algorithm/update_renderables.hpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/mbgl/algorithm/update_renderables.hpp b/src/mbgl/algorithm/update_renderables.hpp index 316ada8269..91eb058638 100644 --- a/src/mbgl/algorithm/update_renderables.hpp +++ b/src/mbgl/algorithm/update_renderables.hpp @@ -21,19 +21,18 @@ void updateRenderables(GetTileFn getTile, RenderTileFn renderTile, const IdealTileIDs& idealTileIDs, const Range<uint8_t>& zoomRange, - const uint8_t dataTileZoom, const optional<uint8_t>& maxParentOverscaleFactor = nullopt) { std::unordered_set<OverscaledTileID> checked; bool covered; int32_t overscaledZ; // for (all in the set of ideal tiles of the source) { - for (const auto& idealRenderTileID : idealTileIDs) { - assert(idealRenderTileID.canonical.z >= zoomRange.min); - assert(idealRenderTileID.canonical.z <= zoomRange.max); - assert(dataTileZoom >= idealRenderTileID.canonical.z); + for (const auto& idealDataTileID : idealTileIDs) { + assert(idealDataTileID.canonical.z >= zoomRange.min); + assert(idealDataTileID.canonical.z <= zoomRange.max); + assert(idealDataTileID.overscaledZ >= idealDataTileID.canonical.z); - const OverscaledTileID idealDataTileID(dataTileZoom, idealRenderTileID.wrap, idealRenderTileID.canonical); + const UnwrappedTileID idealRenderTileID = idealDataTileID.toUnwrapped(); auto tile = getTile(idealDataTileID); if (!tile) { tile = createTile(idealDataTileID); @@ -56,7 +55,7 @@ void updateRenderables(GetTileFn getTile, // The tile isn't loaded yet, but retain it anyway because it's an ideal tile. retainTile(*tile, TileNecessity::Required); covered = true; - overscaledZ = dataTileZoom + 1; + overscaledZ = idealDataTileID.overscaledZ + 1; if (overscaledZ > zoomRange.max) { // We're looking for an overzoomed child tile. const auto childDataTileID = idealDataTileID.scaledTo(overscaledZ); @@ -85,11 +84,12 @@ void updateRenderables(GetTileFn getTile, if (!covered) { // We couldn't find child tiles that entirely cover the ideal tile. - for (overscaledZ = dataTileZoom - 1; overscaledZ >= zoomRange.min; --overscaledZ) { + for (overscaledZ = idealDataTileID.overscaledZ - 1; overscaledZ >= zoomRange.min; --overscaledZ) { const auto parentDataTileID = idealDataTileID.scaledTo(overscaledZ); // Request / render parent tile only if it's overscale factor is less than defined maximum. - if (maxParentOverscaleFactor && (dataTileZoom - overscaledZ) > *maxParentOverscaleFactor) { + if (maxParentOverscaleFactor && + (idealDataTileID.overscaledZ - overscaledZ) > *maxParentOverscaleFactor) { break; } |