summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Shalamov <alexander.shalamov@mapbox.com>2019-11-18 15:34:16 +0200
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2019-12-02 17:11:49 +0200
commit33ba4052b67436b09f1dff21991673f6ea37275e (patch)
treeb6b6735132f24b9beb4c4f675780ba0fdadf8988
parent26bf566f535e55c6d82830e3b0f5a2702a0fec42 (diff)
downloadqtlocation-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.cpp16
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,