diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2019-12-09 12:35:49 +0100 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-01-15 15:02:11 +0200 |
commit | f82d4e685715e3b752cfd53626036b33f0ad0b70 (patch) | |
tree | 7b487a02dd22edd9e3b0370de2fb4a1fc400d84b /src/mbgl/layout | |
parent | 0652118d0858e1020a8a72c8da897f633f82690a (diff) | |
download | qtlocation-mapboxgl-f82d4e685715e3b752cfd53626036b33f0ad0b70.tar.gz |
[core] Upgrade shaders and add new vertices to SymbolLayout
Diffstat (limited to 'src/mbgl/layout')
-rw-r--r-- | src/mbgl/layout/symbol_layout.cpp | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp index 499f1113cc..506e300b1b 100644 --- a/src/mbgl/layout/symbol_layout.cpp +++ b/src/mbgl/layout/symbol_layout.cpp @@ -879,6 +879,9 @@ size_t SymbolLayout::addSymbol(SymbolBucket::Buffer& buffer, const auto &bl = symbol.bl; const auto &br = symbol.br; const auto &tex = symbol.tex; + const Point<float> pixelOffsetTL{0, 0}; + const Point<float> pixelOffsetBR{0, 0}; + const Point<float> minFontScale{0, 0}; if (buffer.segments.empty() || buffer.segments.back().vertexLength + vertexLength > std::numeric_limits<uint16_t>::max() || @@ -893,14 +896,42 @@ size_t SymbolLayout::addSymbol(SymbolBucket::Buffer& buffer, uint16_t index = segment.vertexLength; // coordinates (2 triangles) - buffer.vertices.emplace_back(SymbolSDFIconProgram::layoutVertex( - labelAnchor.point, tl, symbol.glyphOffset.y, tex.x, tex.y, sizeData, symbol.isSDF)); - buffer.vertices.emplace_back(SymbolSDFIconProgram::layoutVertex( - labelAnchor.point, tr, symbol.glyphOffset.y, tex.x + tex.w, tex.y, sizeData, symbol.isSDF)); - buffer.vertices.emplace_back(SymbolSDFIconProgram::layoutVertex( - labelAnchor.point, bl, symbol.glyphOffset.y, tex.x, tex.y + tex.h, sizeData, symbol.isSDF)); - buffer.vertices.emplace_back(SymbolSDFIconProgram::layoutVertex( - labelAnchor.point, br, symbol.glyphOffset.y, tex.x + tex.w, tex.y + tex.h, sizeData, symbol.isSDF)); + buffer.vertices.emplace_back(SymbolSDFIconProgram::layoutVertex(labelAnchor.point, + tl, + symbol.glyphOffset.y, + tex.x, + tex.y, + sizeData, + symbol.isSDF, + pixelOffsetTL, + minFontScale)); + buffer.vertices.emplace_back(SymbolSDFIconProgram::layoutVertex(labelAnchor.point, + tr, + symbol.glyphOffset.y, + tex.x + tex.w, + tex.y, + sizeData, + symbol.isSDF, + {pixelOffsetBR.x, pixelOffsetTL.y}, + minFontScale)); + buffer.vertices.emplace_back(SymbolSDFIconProgram::layoutVertex(labelAnchor.point, + bl, + symbol.glyphOffset.y, + tex.x, + tex.y + tex.h, + sizeData, + symbol.isSDF, + {pixelOffsetTL.x, pixelOffsetBR.y}, + minFontScale)); + buffer.vertices.emplace_back(SymbolSDFIconProgram::layoutVertex(labelAnchor.point, + br, + symbol.glyphOffset.y, + tex.x + tex.w, + tex.y + tex.h, + sizeData, + symbol.isSDF, + pixelOffsetBR, + minFontScale)); // Dynamic/Opacity vertices are initialized so that the vertex count always agrees with // the layout vertex buffer, but they will always be updated before rendering happens |