compute unique clip ids per tile, taking covering children into account

fixes #206
fixes #220
refs #229
This commit is contained in:
Konstantin Käfer
2014-08-21 15:02:08 +02:00
parent b9c7e1bdd9
commit 863b4577e4
11 changed files with 337 additions and 439 deletions

View File

@@ -509,18 +509,12 @@ void Map::updateTiles() {
}
void Map::updateRenderState() {
std::forward_list<Tile::ID> ids;
// Update all clipping IDs.
ClipIDGenerator generator;
for (const std::shared_ptr<StyleSource> &source : getActiveSources()) {
ids.splice_after(ids.before_begin(), source->source->getIDs());
generator.update(source->source->getLoadedTiles());
source->source->updateMatrices(painter.projMatrix, state);
}
const std::map<Tile::ID, ClipID> clipIDs = computeClipIDs(ids);
for (const std::shared_ptr<StyleSource> &source : getActiveSources()) {
source->source->updateClipIDs(clipIDs);
}
}
void Map::prepare() {