Revert "background grid"

This reverts commit 1dd3fdfba3.
This commit is contained in:
Konstantin Käfer
2014-06-03 17:29:27 +02:00
parent 851f56fc59
commit 7a4a833f39
3 changed files with 10 additions and 66 deletions

View File

@@ -37,7 +37,6 @@ public:
bool update();
void updateMatrices(const TransformState &transform);
bool viewportTileParsed();
void drawClippingMasks();
size_t getTileCount() const;
void render(const LayerDescription& layer_desc, const BucketDescription &bucket_desc);

View File

@@ -57,19 +57,6 @@ size_t Source::getTileCount() const {
return tiles.size();
}
bool Source::viewportTileParsed() {
bool parsed = false;
for (auto &pair : tiles) {
Tile::ID id = pair.first;
if (hasTile(id) == TileData::State::parsed) {
parsed = true;
}
}
return parsed;
}
void Source::drawClippingMasks() {
for (std::pair<const Tile::ID, std::unique_ptr<Tile>> &pair : tiles) {
Tile &tile = *pair.second;

View File

@@ -9,64 +9,22 @@ using namespace llmr;
void Painter::drawClippingMasks(const Sources &sources) {
gl::group group("clipping masks");
useProgram(plainShader->program);
glDisable(GL_DEPTH_TEST);
depthMask(false);
glDepthRange(1.0f, 1.0f);
glStencilMask(0xFF);
bool ready = false;
const BackgroundProperties &properties = map.getStyle()->computed.background;
Color background = properties.color;
const float opacity = properties.opacity;
background[0] *= opacity;
background[1] *= opacity;
background[2] *= opacity;
background[3] *= opacity;
plainShader->setColor(background);
for (const auto &pair : sources) {
Source &source = *pair.second;
if (source.viewportTileParsed()) {
ready = true;
}
}
if (ready) {
// At least one viewport tile is parsed. Draw the background.
useProgram(plainShader->program);
const BackgroundProperties &properties = map.getStyle()->computed.background;
Color background = properties.color;
const float opacity = properties.opacity;
background[0] *= opacity;
background[1] *= opacity;
background[2] *= opacity;
background[3] *= opacity;
plainShader->setColor(background);
coveringPlainArray.bind(*plainShader, tileStencilBuffer, BUFFER_OFFSET(0));
} else {
// No viewport tiles are parsed. Draw the grid pattern.
const std::shared_ptr<Sprite> &sprite = map.getStyle()->sprite;
if (sprite) {
SpriteAtlas &spriteAtlas = *map.getSpriteAtlas();
Rect<uint16_t> imagePos = spriteAtlas.getImage("matte-256", *sprite);
std::array<float, 2> imageSize = {{
(float)(imagePos.w * 0.5),
(float)(imagePos.h * 0.5)
}
};
useProgram(patternShader->program);
patternShader->setPatternSize(imageSize);
patternShader->setPatternTopLeft({{
float(imagePos.x) / spriteAtlas.getWidth(),
float(imagePos.y) / spriteAtlas.getHeight(),
}});
patternShader->setPatternBottomRight({{
float(imagePos.x + imagePos.w) / spriteAtlas.getWidth(),
float(imagePos.y + imagePos.h) / spriteAtlas.getHeight(),
}});
std::array<float, 4> color = {{ 1, 1, 1, 1 }};
patternShader->setColor(color);
spriteAtlas.bind(true);
coveringPatternArray.bind(*patternShader, tileStencilBuffer, BUFFER_OFFSET(0));
}
}
coveringPlainArray.bind(*plainShader, tileStencilBuffer, BUFFER_OFFSET(0));
for (const auto &pair : sources) {
Source &source = *pair.second;