summaryrefslogtreecommitdiff
path: root/src/mbgl/layout
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-12-09 12:35:49 +0100
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2020-01-15 15:02:11 +0200
commitf82d4e685715e3b752cfd53626036b33f0ad0b70 (patch)
tree7b487a02dd22edd9e3b0370de2fb4a1fc400d84b /src/mbgl/layout
parent0652118d0858e1020a8a72c8da897f633f82690a (diff)
downloadqtlocation-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.cpp47
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