diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-07-08 16:11:18 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-07-11 18:39:50 -0700 |
commit | a27b5586e56f8d967a5df4e883225dca0e7ddc3e (patch) | |
tree | cdf42af751053e2551658ade27199cca7261ec61 /src/mbgl/renderer/painter_symbol.cpp | |
parent | 6e77149c13899a7b1fc6925687ad495a569f444a (diff) | |
download | qtlocation-mapboxgl-a27b5586e56f8d967a5df4e883225dca0e7ddc3e.tar.gz |
[core] Pass RenderTile rather than individual parameters
Diffstat (limited to 'src/mbgl/renderer/painter_symbol.cpp')
-rw-r--r-- | src/mbgl/renderer/painter_symbol.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/mbgl/renderer/painter_symbol.cpp b/src/mbgl/renderer/painter_symbol.cpp index 6f2d9581eb..4c2847401f 100644 --- a/src/mbgl/renderer/painter_symbol.cpp +++ b/src/mbgl/renderer/painter_symbol.cpp @@ -1,6 +1,7 @@ #include <mbgl/renderer/painter.hpp> #include <mbgl/renderer/paint_parameters.hpp> #include <mbgl/renderer/symbol_bucket.hpp> +#include <mbgl/renderer/render_tile.hpp> #include <mbgl/style/layers/symbol_layer.hpp> #include <mbgl/style/layers/symbol_layer_impl.hpp> #include <mbgl/geometry/glyph_atlas.hpp> @@ -15,8 +16,7 @@ namespace mbgl { using namespace style; void Painter::renderSDF(SymbolBucket &bucket, - const UnwrappedTileID &tileID, - const mat4 &matrix, + const RenderTile& tile, float sdfFontSize, std::array<float, 2> texsize, SDFShader& sdfShader, @@ -37,7 +37,7 @@ void Painter::renderSDF(SymbolBucket &bucket, TranslateAnchorType translateAnchor, float paintSize) { - mat4 vtxMatrix = translatedMatrix(matrix, translate, tileID, translateAnchor); + mat4 vtxMatrix = translatedMatrix(tile.matrix, translate, tile.id, translateAnchor); // If layerStyle.size > bucket.info.fontSize then labels may collide float fontSize = paintSize; @@ -51,7 +51,7 @@ void Painter::renderSDF(SymbolBucket &bucket, if (pitchWithMap) { gammaScale = 1.0 / std::cos(state.getPitch()); - extrudeScale.fill(tileID.pixelsToTileUnits(1, state.getZoom()) * fontScale); + extrudeScale.fill(tile.id.pixelsToTileUnits(1, state.getZoom()) * fontScale); } else { gammaScale = 1.0; extrudeScale = {{ @@ -114,8 +114,7 @@ void Painter::renderSDF(SymbolBucket &bucket, void Painter::renderSymbol(PaintParameters& parameters, SymbolBucket& bucket, const SymbolLayer& layer, - const UnwrappedTileID& tileID, - const mat4& matrix) { + const RenderTile& tile) { // Abort early. if (pass == RenderPass::Opaque) { return; @@ -167,8 +166,7 @@ void Painter::renderSymbol(PaintParameters& parameters, if (sdf) { renderSDF(bucket, - tileID, - matrix, + tile, 1.0f, {{ float(activeSpriteAtlas->getWidth()) / 4.0f, float(activeSpriteAtlas->getHeight()) / 4.0f }}, parameters.shaders.sdfIcon, @@ -188,13 +186,13 @@ void Painter::renderSymbol(PaintParameters& parameters, layer.impl->iconSize); } else { mat4 vtxMatrix = - translatedMatrix(matrix, paint.iconTranslate, tileID, paint.iconTranslateAnchor); + translatedMatrix(tile.matrix, paint.iconTranslate, tile.id, paint.iconTranslateAnchor); std::array<float, 2> extrudeScale; const bool alignedWithMap = layout.iconRotationAlignment == AlignmentType::Map; if (alignedWithMap) { - extrudeScale.fill(tileID.pixelsToTileUnits(1, state.getZoom()) * fontScale); + extrudeScale.fill(tile.id.pixelsToTileUnits(1, state.getZoom()) * fontScale); } else { extrudeScale = {{ pixelsToGLUnits[0] * fontScale * state.getAltitude(), @@ -235,8 +233,7 @@ void Painter::renderSymbol(PaintParameters& parameters, glyphAtlas->bind(store, config, 0); renderSDF(bucket, - tileID, - matrix, + tile, 24.0f, {{ float(glyphAtlas->width) / 4, float(glyphAtlas->height) / 4 }}, parameters.shaders.sdfGlyph, @@ -260,11 +257,11 @@ void Painter::renderSymbol(PaintParameters& parameters, auto& collisionBoxShader = shaders->collisionBox; config.program = collisionBoxShader.getID(); - collisionBoxShader.u_matrix = matrix; + collisionBoxShader.u_matrix = tile.matrix; // TODO: This was the overscaled z instead of the canonical z. - collisionBoxShader.u_scale = std::pow(2, state.getZoom() - tileID.canonical.z); + collisionBoxShader.u_scale = std::pow(2, state.getZoom() - tile.id.canonical.z); collisionBoxShader.u_zoom = state.getZoom() * 10; - collisionBoxShader.u_maxzoom = (tileID.canonical.z + 1) * 10; + collisionBoxShader.u_maxzoom = (tile.id.canonical.z + 1) * 10; config.lineWidth = 1.0f; setDepthSublayer(0); |