summaryrefslogtreecommitdiff
path: root/src/renderer
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-08-06 12:38:57 +0200
committerKonstantin Käfer <mail@kkaefer.com>2014-08-06 12:38:57 +0200
commit5781d12ff1aa09c832f85239a18f2db4aa496c04 (patch)
tree6c38112b69971dfa4d3f4f8bb5acdc4d5cf3915c /src/renderer
parent625ad1efe2f5113d69eedc363368256741d80780 (diff)
downloadqtlocation-mapboxgl-5781d12ff1aa09c832f85239a18f2db4aa496c04.tar.gz
linearly interpolate rotated icons
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/painter_symbol.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/renderer/painter_symbol.cpp b/src/renderer/painter_symbol.cpp
index a53c73f764..91ae31d584 100644
--- a/src/renderer/painter_symbol.cpp
+++ b/src/renderer/painter_symbol.cpp
@@ -169,8 +169,14 @@ void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> lay
if (bucket.hasIconData()) {
mat4 exMatrix;
matrix::copy(exMatrix, projMatrix);
- if (bucket.properties.icon.rotation_alignment == RotationAlignmentType::Map) {
- matrix::rotate_z(exMatrix, exMatrix, map.getState().getAngle());
+
+ const float angleOffset =
+ bucket.properties.icon.rotation_alignment == RotationAlignmentType::Map
+ ? map.getState().getAngle()
+ : 0;
+
+ if (angleOffset) {
+ matrix::rotate_z(exMatrix, exMatrix, angleOffset);
}
// If layerStyle.size > bucket.info.fontSize then labels may collide
@@ -183,7 +189,7 @@ void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> lay
iconShader->setExtrudeMatrix(exMatrix);
SpriteAtlas &spriteAtlas = *map.getSpriteAtlas();
- spriteAtlas.bind(map.getState().isChanging());
+ spriteAtlas.bind(map.getState().isChanging() || angleOffset != 0 || fontScale != 1);
iconShader->setTextureSize(
{{static_cast<float>(spriteAtlas.getTextureWidth()), static_cast<float>(spriteAtlas.getTextureHeight())}});