[core] don't assign clip IDs to tiles that aren't rendered
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user