diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-11-18 15:34:16 +0200 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-12-02 17:11:49 +0200 |
commit | 33ba4052b67436b09f1dff21991673f6ea37275e (patch) | |
tree | b6b6735132f24b9beb4c4f675780ba0fdadf8988 | |
parent | 26bf566f535e55c6d82830e3b0f5a2702a0fec42 (diff) | |
download | qtlocation-mapboxgl-33ba4052b67436b09f1dff21991673f6ea37275e.tar.gz |
[core] Use linear filtering for icons in text for zoom dependent text-size
-rw-r--r-- | src/mbgl/renderer/layers/render_symbol_layer.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp index 77a5813455..17376fd864 100644 --- a/src/mbgl/renderer/layers/render_symbol_layer.cpp +++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp @@ -198,13 +198,6 @@ void drawText(const DrawFn& draw, const gfx::TextureBinding glyphTextureBinding{tile.getGlyphAtlasTexture().getResource(), gfx::TextureFilterType::Linear}; - const bool transformed = values.rotationAlignment == AlignmentType::Map || parameters.state.getPitch() != 0; - const Size& iconTexSize = tile.getIconAtlasTexture().size; - const gfx::TextureBinding iconTextureBinding{tile.getIconAtlasTexture().getResource(), - parameters.state.isChanging() || transformed - ? gfx::TextureFilterType::Linear - : gfx::TextureFilterType::Nearest}; - const auto drawGlyphs = [&](auto& program, const auto& uniforms, const auto& textures, SymbolSDFPart part) { draw(program, uniforms, @@ -218,6 +211,15 @@ void drawText(const DrawFn& draw, }; if (bucket.iconsInText) { + const ZoomEvaluatedSize partiallyEvaluatedTextSize = + bucket.textSizeBinder->evaluateForZoom(parameters.state.getZoom()); + const bool transformed = values.rotationAlignment == AlignmentType::Map || parameters.state.getPitch() != 0; + const Size& iconTexSize = tile.getIconAtlasTexture().size; + const gfx::TextureBinding iconTextureBinding{ + tile.getIconAtlasTexture().getResource(), + parameters.state.isChanging() || transformed || !partiallyEvaluatedTextSize.isZoomConstant + ? gfx::TextureFilterType::Linear + : gfx::TextureFilterType::Nearest}; if (values.hasHalo) { drawGlyphs(parameters.programs.getSymbolLayerPrograms().symbolTextAndIcon, SymbolTextAndIconProgram::layoutUniformValues(bucket.hasVariablePlacement, |