diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-07-08 14:49:38 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-07-11 18:39:50 -0700 |
commit | 6e77149c13899a7b1fc6925687ad495a569f444a (patch) | |
tree | 827c7f420f5be4db20fa82c4f448ecb842c2a1d6 /src/mbgl/renderer/painter_symbol.cpp | |
parent | 822ec091da5f1810bcba8afbb7cde35476b2f119 (diff) | |
download | qtlocation-mapboxgl-6e77149c13899a7b1fc6925687ad495a569f444a.tar.gz |
[core] Introduce PaintParameters
Use it to DRY selection of regular vs. overdraw shaders and VAOs.
Diffstat (limited to 'src/mbgl/renderer/painter_symbol.cpp')
-rw-r--r-- | src/mbgl/renderer/painter_symbol.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/mbgl/renderer/painter_symbol.cpp b/src/mbgl/renderer/painter_symbol.cpp index d541479b10..6f2d9581eb 100644 --- a/src/mbgl/renderer/painter_symbol.cpp +++ b/src/mbgl/renderer/painter_symbol.cpp @@ -1,4 +1,5 @@ #include <mbgl/renderer/painter.hpp> +#include <mbgl/renderer/paint_parameters.hpp> #include <mbgl/renderer/symbol_bucket.hpp> #include <mbgl/style/layers/symbol_layer.hpp> #include <mbgl/style/layers/symbol_layer_impl.hpp> @@ -110,7 +111,8 @@ void Painter::renderSDF(SymbolBucket &bucket, } } -void Painter::renderSymbol(SymbolBucket& bucket, +void Painter::renderSymbol(PaintParameters& parameters, + SymbolBucket& bucket, const SymbolLayer& layer, const UnwrappedTileID& tileID, const mat4& matrix) { @@ -169,7 +171,7 @@ void Painter::renderSymbol(SymbolBucket& bucket, matrix, 1.0f, {{ float(activeSpriteAtlas->getWidth()) / 4.0f, float(activeSpriteAtlas->getHeight()) / 4.0f }}, - isOverdraw() ? overdrawShaders->sdfIcon : shaders->sdfIcon, + parameters.shaders.sdfIcon, &SymbolBucket::drawIcons, layout.iconRotationAlignment, // icon-pitch-alignment is not yet implemented @@ -200,8 +202,7 @@ void Painter::renderSymbol(SymbolBucket& bucket, }}; } - const bool overdraw = isOverdraw(); - auto& iconShader = overdraw ? overdrawShaders->icon : shaders->icon; + auto& iconShader = parameters.shaders.icon; config.program = iconShader.getID(); iconShader.u_matrix = vtxMatrix; @@ -219,7 +220,7 @@ void Painter::renderSymbol(SymbolBucket& bucket, iconShader.u_fadetexture = 1; setDepthSublayer(0); - bucket.drawIcons(iconShader, store, overdraw); + bucket.drawIcons(iconShader, store, isOverdraw()); } } @@ -238,7 +239,7 @@ void Painter::renderSymbol(SymbolBucket& bucket, matrix, 24.0f, {{ float(glyphAtlas->width) / 4, float(glyphAtlas->height) / 4 }}, - isOverdraw() ? overdrawShaders->sdfGlyph : shaders->sdfGlyph, + parameters.shaders.sdfGlyph, &SymbolBucket::drawGlyphs, layout.textRotationAlignment, layout.textPitchAlignment, |