summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mbgl/map/map.hpp2
-rw-r--r--include/mbgl/map/raster_tile_data.hpp2
-rw-r--r--include/mbgl/map/source.hpp2
-rw-r--r--include/mbgl/map/tile_data.hpp2
-rw-r--r--include/mbgl/map/vector_tile_data.hpp2
-rw-r--r--include/mbgl/renderer/bucket.hpp2
-rw-r--r--include/mbgl/renderer/debug_bucket.hpp2
-rw-r--r--include/mbgl/renderer/fill_bucket.hpp2
-rw-r--r--include/mbgl/renderer/line_bucket.hpp2
-rw-r--r--include/mbgl/renderer/painter.hpp22
-rw-r--r--include/mbgl/renderer/raster_bucket.hpp2
-rw-r--r--include/mbgl/renderer/symbol_bucket.hpp2
-rw-r--r--src/map/map.cpp4
-rw-r--r--src/map/raster_tile_data.cpp4
-rw-r--r--src/map/source.cpp6
-rw-r--r--src/map/vector_tile_data.cpp4
-rw-r--r--src/renderer/debug_bucket.cpp4
-rw-r--r--src/renderer/fill_bucket.cpp4
-rw-r--r--src/renderer/line_bucket.cpp4
-rw-r--r--src/renderer/painter.cpp8
-rw-r--r--src/renderer/painter_debug.cpp8
-rw-r--r--src/renderer/painter_fill.cpp4
-rw-r--r--src/renderer/painter_line.cpp4
-rw-r--r--src/renderer/painter_prerender.cpp2
-rw-r--r--src/renderer/painter_raster.cpp10
-rw-r--r--src/renderer/painter_symbol.cpp2
-rw-r--r--src/renderer/raster_bucket.cpp4
-rw-r--r--src/renderer/symbol_bucket.cpp4
28 files changed, 60 insertions, 60 deletions
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp
index 59f54bdb14..afb3d1f766 100644
--- a/include/mbgl/map/map.hpp
+++ b/include/mbgl/map/map.hpp
@@ -48,7 +48,7 @@ public:
void renderLayers(std::shared_ptr<StyleLayerGroup> group);
enum RenderPass { Opaque, Translucent };
- void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, const Tile::ID* id = nullptr);
+ void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, const Tile::ID* id = nullptr, const mat4* matrix = nullptr);
// Forces a map update: always triggers a rerender.
void update();
diff --git a/include/mbgl/map/raster_tile_data.hpp b/include/mbgl/map/raster_tile_data.hpp
index 76b7eee2cd..98aa3baaf5 100644
--- a/include/mbgl/map/raster_tile_data.hpp
+++ b/include/mbgl/map/raster_tile_data.hpp
@@ -22,7 +22,7 @@ public:
~RasterTileData();
virtual void parse();
- virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc);
+ virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix);
virtual bool hasData(std::shared_ptr<StyleLayer> layer_desc) const;
protected:
diff --git a/include/mbgl/map/source.hpp b/include/mbgl/map/source.hpp
index d708305fe6..4ffd097193 100644
--- a/include/mbgl/map/source.hpp
+++ b/include/mbgl/map/source.hpp
@@ -32,7 +32,7 @@ public:
void drawClippingMasks(Painter &painter);
size_t getTileCount() const;
void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc);
- void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id);
+ void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id, const mat4 &matrix);
void finishRender(Painter &painter);
std::forward_list<Tile::ID> getIDs() const;
diff --git a/include/mbgl/map/tile_data.hpp b/include/mbgl/map/tile_data.hpp
index c349ea2bae..5991613a2d 100644
--- a/include/mbgl/map/tile_data.hpp
+++ b/include/mbgl/map/tile_data.hpp
@@ -53,7 +53,7 @@ public:
virtual void beforeParse();
virtual void parse() = 0;
virtual void afterParse();
- virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc) = 0;
+ virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix) = 0;
virtual bool hasData(std::shared_ptr<StyleLayer> layer_desc) const = 0;
diff --git a/include/mbgl/map/vector_tile_data.hpp b/include/mbgl/map/vector_tile_data.hpp
index edad228999..deb628e485 100644
--- a/include/mbgl/map/vector_tile_data.hpp
+++ b/include/mbgl/map/vector_tile_data.hpp
@@ -32,7 +32,7 @@ public:
virtual void beforeParse();
virtual void parse();
virtual void afterParse();
- virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc);
+ virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix);
virtual bool hasData(std::shared_ptr<StyleLayer> layer_desc) const;
protected:
diff --git a/include/mbgl/renderer/bucket.hpp b/include/mbgl/renderer/bucket.hpp
index a8bd437bb6..1391f6e3e3 100644
--- a/include/mbgl/renderer/bucket.hpp
+++ b/include/mbgl/renderer/bucket.hpp
@@ -13,7 +13,7 @@ class StyleLayer;
class Bucket : private util::noncopyable {
public:
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id) = 0;
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix) = 0;
virtual bool hasData() const = 0;
virtual ~Bucket() {}
diff --git a/include/mbgl/renderer/debug_bucket.hpp b/include/mbgl/renderer/debug_bucket.hpp
index ac4f18cc2c..660b7fcba8 100644
--- a/include/mbgl/renderer/debug_bucket.hpp
+++ b/include/mbgl/renderer/debug_bucket.hpp
@@ -20,7 +20,7 @@ class DebugBucket : public Bucket {
public:
DebugBucket(DebugFontBuffer& fontBuffer);
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
virtual bool hasData() const;
void drawLines(PlainShader& shader);
diff --git a/include/mbgl/renderer/fill_bucket.hpp b/include/mbgl/renderer/fill_bucket.hpp
index 9193b09149..e9340cce68 100644
--- a/include/mbgl/renderer/fill_bucket.hpp
+++ b/include/mbgl/renderer/fill_bucket.hpp
@@ -44,7 +44,7 @@ public:
const StyleBucketFill& properties);
~FillBucket();
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
virtual bool hasData() const;
void addGeometry(pbf& data);
diff --git a/include/mbgl/renderer/line_bucket.hpp b/include/mbgl/renderer/line_bucket.hpp
index d42b10bfb7..f65ca35605 100644
--- a/include/mbgl/renderer/line_bucket.hpp
+++ b/include/mbgl/renderer/line_bucket.hpp
@@ -28,7 +28,7 @@ public:
PointElementsBuffer& pointElementsBuffer,
const StyleBucketLine& properties);
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
virtual bool hasData() const;
void addGeometry(pbf& data);
diff --git a/include/mbgl/renderer/painter.hpp b/include/mbgl/renderer/painter.hpp
index fa981c3c25..d4810cf69b 100644
--- a/include/mbgl/renderer/painter.hpp
+++ b/include/mbgl/renderer/painter.hpp
@@ -70,26 +70,26 @@ public:
void changeMatrix();
// Renders a particular layer from a tile.
- void renderTileLayer(const Tile& tile, std::shared_ptr<StyleLayer> layer_desc);
+ void renderTileLayer(const Tile& tile, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix);
// Renders debug information for a tile.
void renderTileDebug(const Tile& tile);
// Renders the red debug frame around a tile, visualizing its perimeter.
- void renderDebugFrame();
+ void renderDebugFrame(const mat4 &matrix);
- void renderDebugText(DebugBucket& bucket);
+ void renderDebugText(DebugBucket& bucket, const mat4 &matrix);
void renderDebugText(const std::vector<std::string> &strings);
- void renderFill(FillBucket& bucket, const FillProperties& properties, const Tile::ID& id, const mat4 &mat);
- void renderFill(FillBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
- void renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
- void renderSymbol(SymbolBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
- void renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ void renderFill(FillBucket& bucket, const FillProperties& properties, const Tile::ID& id, const mat4 &matrix);
+ void renderFill(FillBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
+ void renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
+ void renderSymbol(SymbolBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
+ void renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
void preparePrerender(RasterBucket &bucket);
void finishPrerender(RasterBucket &bucket);
- void renderPrerenderedTexture(RasterBucket &bucket);
+ void renderPrerenderedTexture(RasterBucket &bucket, const mat4 &matrix);
void createPrerendered(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
@@ -119,7 +119,7 @@ public:
bool needsAnimation() const;
private:
void setupShaders();
- const mat4 &translatedMatrix(const std::array<float, 2> &translation, const Tile::ID &id, TranslateAnchorType anchor = TranslateAnchorType::Map);
+ const mat4 &translatedMatrix(const mat4& matrix, const std::array<float, 2> &translation, const Tile::ID &id, TranslateAnchorType anchor = TranslateAnchorType::Map);
void prepareTile(const Tile& tile);
@@ -129,7 +129,7 @@ public:
void depthMask(bool value);
public:
- mat4 matrix;
+// mat4 matrix;
mat4 vtxMatrix;
mat4 projMatrix;
mat4 nativeMatrix;
diff --git a/include/mbgl/renderer/raster_bucket.hpp b/include/mbgl/renderer/raster_bucket.hpp
index 4eccb22bd4..41f4d4e4c0 100644
--- a/include/mbgl/renderer/raster_bucket.hpp
+++ b/include/mbgl/renderer/raster_bucket.hpp
@@ -18,7 +18,7 @@ class RasterBucket : public Bucket {
public:
RasterBucket(const std::shared_ptr<Texturepool> &texturepool, const StyleBucketRaster& properties);
- virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix);
virtual bool hasData() const;
bool setImage(const std::string &data);
diff --git a/include/mbgl/renderer/symbol_bucket.hpp b/include/mbgl/renderer/symbol_bucket.hpp
index c003230cae..e890274238 100644
--- a/include/mbgl/renderer/symbol_bucket.hpp
+++ b/include/mbgl/renderer/symbol_bucket.hpp
@@ -53,7 +53,7 @@ class SymbolBucket : public Bucket {
public:
SymbolBucket(const StyleBucketSymbol &properties, Collision &collision);
- virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id);
+ virtual void render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id, const mat4 &matrix);
virtual bool hasData() const;
virtual bool hasTextData() const;
virtual bool hasIconData() const;
diff --git a/src/map/map.cpp b/src/map/map.cpp
index a289e46a29..6bbbfcc1eb 100644
--- a/src/map/map.cpp
+++ b/src/map/map.cpp
@@ -633,7 +633,7 @@ void Map::renderLayers(std::shared_ptr<StyleLayerGroup> group) {
}
}
-void Map::renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, const Tile::ID* id) {
+void Map::renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, const Tile::ID* id, const mat4* matrix) {
if (layer_desc->layers && layer_desc->type != StyleLayerType::Raster) {
// This is a layer group. We render them during our translucent render pass.
if (pass == Translucent) {
@@ -719,7 +719,7 @@ void Map::renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, c
if (!id) {
style_source.source->render(painter, layer_desc);
} else {
- style_source.source->render(painter, layer_desc, *id);
+ style_source.source->render(painter, layer_desc, *id, *matrix);
}
}
}
diff --git a/src/map/raster_tile_data.cpp b/src/map/raster_tile_data.cpp
index a401fdc4df..182a614393 100644
--- a/src/map/raster_tile_data.cpp
+++ b/src/map/raster_tile_data.cpp
@@ -25,8 +25,8 @@ void RasterTileData::parse() {
}
}
-void RasterTileData::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc) {
- bucket.render(painter, layer_desc, id);
+void RasterTileData::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix) {
+ bucket.render(painter, layer_desc, id, matrix);
}
bool RasterTileData::hasData(std::shared_ptr<StyleLayer> /*layer_desc*/) const {
diff --git a/src/map/source.cpp b/src/map/source.cpp
index c4cd3a51d9..bbe25969c1 100644
--- a/src/map/source.cpp
+++ b/src/map/source.cpp
@@ -83,15 +83,15 @@ void Source::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc) {
for (const std::pair<const Tile::ID, std::unique_ptr<Tile>> &pair : tiles) {
Tile &tile = *pair.second;
if (tile.data && tile.data->state == TileData::State::parsed) {
- painter.renderTileLayer(tile, layer_desc);
+ painter.renderTileLayer(tile, layer_desc, tile.matrix);
}
}
}
-void Source::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id) {
+void Source::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id, const mat4 &matrix) {
auto it = tiles.find(id);
if (it != tiles.end() && it->second->data && it->second->data->state == TileData::State::parsed) {
- painter.renderTileLayer(*it->second, layer_desc);
+ painter.renderTileLayer(*it->second, layer_desc, matrix);
}
}
diff --git a/src/map/vector_tile_data.cpp b/src/map/vector_tile_data.cpp
index 2bf339b65f..f1c67d8e16 100644
--- a/src/map/vector_tile_data.cpp
+++ b/src/map/vector_tile_data.cpp
@@ -52,12 +52,12 @@ void VectorTileData::afterParse() {
parser.reset();
}
-void VectorTileData::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc) {
+void VectorTileData::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix) {
if (state == State::parsed && layer_desc->bucket) {
auto databucket_it = buckets.find(layer_desc->bucket->name);
if (databucket_it != buckets.end()) {
assert(databucket_it->second);
- databucket_it->second->render(painter, layer_desc, id);
+ databucket_it->second->render(painter, layer_desc, id, matrix);
}
}
}
diff --git a/src/renderer/debug_bucket.cpp b/src/renderer/debug_bucket.cpp
index e51dd75b1e..a3ac329f49 100644
--- a/src/renderer/debug_bucket.cpp
+++ b/src/renderer/debug_bucket.cpp
@@ -14,8 +14,8 @@ DebugBucket::DebugBucket(DebugFontBuffer& fontBuffer)
: fontBuffer(fontBuffer) {
}
-void DebugBucket::render(Painter& painter, std::shared_ptr<StyleLayer> /*layer_desc*/, const Tile::ID& /*id*/) {
- painter.renderDebugText(*this);
+void DebugBucket::render(Painter& painter, std::shared_ptr<StyleLayer> /*layer_desc*/, const Tile::ID& /*id*/, const mat4 &matrix) {
+ painter.renderDebugText(*this, matrix);
}
bool DebugBucket::hasData() const {
diff --git a/src/renderer/fill_bucket.cpp b/src/renderer/fill_bucket.cpp
index 17aa2bccfc..4b4000ce97 100644
--- a/src/renderer/fill_bucket.cpp
+++ b/src/renderer/fill_bucket.cpp
@@ -204,8 +204,8 @@ void FillBucket::tessellate() {
lineGroup.vertex_length += total_vertex_count;
}
-void FillBucket::render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id) {
- painter.renderFill(*this, layer_desc, id);
+void FillBucket::render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix) {
+ painter.renderFill(*this, layer_desc, id, matrix);
}
bool FillBucket::hasData() const {
diff --git a/src/renderer/line_bucket.cpp b/src/renderer/line_bucket.cpp
index 2e04820e42..949d71e134 100644
--- a/src/renderer/line_bucket.cpp
+++ b/src/renderer/line_bucket.cpp
@@ -341,8 +341,8 @@ void LineBucket::addGeometry(const std::vector<Coordinate>& vertices) {
}
}
-void LineBucket::render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id) {
- painter.renderLine(*this, layer_desc, id);
+void LineBucket::render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix) {
+ painter.renderLine(*this, layer_desc, id, matrix);
}
bool LineBucket::hasData() const {
diff --git a/src/renderer/painter.cpp b/src/renderer/painter.cpp
index 6cdaf760ae..dc75b0abc0 100644
--- a/src/renderer/painter.cpp
+++ b/src/renderer/painter.cpp
@@ -164,25 +164,25 @@ void Painter::setStrata(float value) {
}
void Painter::prepareTile(const Tile& tile) {
- matrix = tile.matrix;
+// matrix = tile.matrix;
GLint id = (GLint)tile.clip.mask.to_ulong();
GLuint mask = clipMask[tile.clip.length];
glStencilFunc(GL_EQUAL, id, mask);
}
-void Painter::renderTileLayer(const Tile& tile, std::shared_ptr<StyleLayer> layer_desc) {
+void Painter::renderTileLayer(const Tile& tile, std::shared_ptr<StyleLayer> layer_desc, const mat4 &matrix) {
assert(tile.data);
if (tile.data->hasData(layer_desc) || layer_desc->type == StyleLayerType::Raster) {
gl::group group(util::sprintf<32>("render %d/%d/%d\n", tile.id.z, tile.id.y, tile.id.z));
prepareTile(tile);
- tile.data->render(*this, layer_desc);
+ tile.data->render(*this, layer_desc, matrix);
frameHistory.record(map.getAnimationTime(), map.getState().getNormalizedZoom());
}
}
-const mat4 &Painter::translatedMatrix(const std::array<float, 2> &translation, const Tile::ID &id, TranslateAnchorType anchor) {
+const mat4 &Painter::translatedMatrix(const mat4& matrix, const std::array<float, 2> &translation, const Tile::ID &id, TranslateAnchorType anchor) {
if (translation[0] == 0 && translation[1] == 0) {
return matrix;
} else {
diff --git a/src/renderer/painter_debug.cpp b/src/renderer/painter_debug.cpp
index d79493e61e..eae655f1f5 100644
--- a/src/renderer/painter_debug.cpp
+++ b/src/renderer/painter_debug.cpp
@@ -10,12 +10,12 @@ void Painter::renderTileDebug(const Tile& tile) {
assert(tile.data);
if (debug) {
prepareTile(tile);
- renderDebugText(tile.data->debugBucket);
- renderDebugFrame();
+ renderDebugText(tile.data->debugBucket, tile.matrix);
+ renderDebugFrame(tile.matrix);
}
}
-void Painter::renderDebugText(DebugBucket& bucket) {
+void Painter::renderDebugText(DebugBucket& bucket, const mat4 &matrix) {
gl::group group("debug text");
glDisable(GL_DEPTH_TEST);
@@ -42,7 +42,7 @@ void Painter::renderDebugText(DebugBucket& bucket) {
glEnable(GL_DEPTH_TEST);
}
-void Painter::renderDebugFrame() {
+void Painter::renderDebugFrame(const mat4 &matrix) {
gl::group group("debug frame");
// Disable depth test and don't count this towards the depth buffer,
diff --git a/src/renderer/painter_fill.cpp b/src/renderer/painter_fill.cpp
index d0bfcad83d..1717639338 100644
--- a/src/renderer/painter_fill.cpp
+++ b/src/renderer/painter_fill.cpp
@@ -146,10 +146,10 @@ void Painter::renderFill(FillBucket& bucket, const FillProperties& properties, c
}
}
-void Painter::renderFill(FillBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id) {
+void Painter::renderFill(FillBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix) {
// Abort early.
if (!bucket.hasData()) return;
const FillProperties &properties = layer_desc->getProperties<FillProperties>();
- const mat4 &vtxMatrix = translatedMatrix(properties.translate, id, properties.translateAnchor);
+ const mat4 &vtxMatrix = translatedMatrix(matrix, properties.translate, id, properties.translateAnchor);
renderFill(bucket, properties, id, vtxMatrix);
}
diff --git a/src/renderer/painter_line.cpp b/src/renderer/painter_line.cpp
index dc09f58951..20c6491fcc 100644
--- a/src/renderer/painter_line.cpp
+++ b/src/renderer/painter_line.cpp
@@ -5,7 +5,7 @@
using namespace mbgl;
-void Painter::renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id) {
+void Painter::renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix) {
// Abort early.
if (pass == Opaque) return;
if (!bucket.hasData()) return;
@@ -31,7 +31,7 @@ void Painter::renderLine(LineBucket& bucket, std::shared_ptr<StyleLayer> layer_d
float dash_length = properties.dash_array[0];
float dash_gap = properties.dash_array[1];
- const mat4 &vtxMatrix = translatedMatrix(properties.translate, id, properties.translateAnchor);
+ const mat4 &vtxMatrix = translatedMatrix(matrix, properties.translate, id, properties.translateAnchor);
glDepthRange(strata, 1.0f);
diff --git a/src/renderer/painter_prerender.cpp b/src/renderer/painter_prerender.cpp
index 124a6c1fb3..42033271b1 100644
--- a/src/renderer/painter_prerender.cpp
+++ b/src/renderer/painter_prerender.cpp
@@ -27,7 +27,7 @@ void Painter::finishPrerender(RasterBucket &bucket) {
glViewport(0, 0, gl_viewport[0], gl_viewport[1]);
}
-void Painter::renderPrerenderedTexture(RasterBucket &bucket) {
+void Painter::renderPrerenderedTexture(RasterBucket &bucket, const mat4 &matrix) {
const int buffer = bucket.properties.buffer * 4096.0f;
// draw the texture on a quad
diff --git a/src/renderer/painter_raster.cpp b/src/renderer/painter_raster.cpp
index 8d8f263bac..723d4b5e4d 100644
--- a/src/renderer/painter_raster.cpp
+++ b/src/renderer/painter_raster.cpp
@@ -9,7 +9,7 @@
using namespace mbgl;
-void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id) {
+void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix) {
if (pass != Translucent) return;
const RasterProperties &properties = layer_desc->getProperties<RasterProperties>();
@@ -32,7 +32,7 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay
const mat4 oldMatrix = vtxMatrix;
- const mat4 vtxMatrix = [&]{
+ const mat4 preMatrix = [&]{
mat4 vtxMatrix;
matrix::ortho(vtxMatrix, -buffer, 4096 + buffer, -4096 - buffer, buffer, 0, 1);
matrix::translate(vtxMatrix, vtxMatrix, 0, -4096, 0);
@@ -57,9 +57,9 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay
int i = 0;
for (auto it = layer_desc->layers->layers.begin(), end = layer_desc->layers->layers.end(); it != end; ++it, --i) {
setOpaque();
- map.renderLayer(*it, Map::RenderPass::Opaque, &id);
+ map.renderLayer(*it, Map::RenderPass::Opaque, &id, &preMatrix);
setTranslucent();
- map.renderLayer(*it, Map::RenderPass::Translucent, &id);
+ map.renderLayer(*it, Map::RenderPass::Translucent, &id, &preMatrix);
}
// TODO make a separate renderLayer overload that takes a prerendered + tileID
@@ -75,7 +75,7 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay
}
- renderPrerenderedTexture(bucket);
+ renderPrerenderedTexture(bucket, matrix);
}
diff --git a/src/renderer/painter_symbol.cpp b/src/renderer/painter_symbol.cpp
index a2238a3544..497051f772 100644
--- a/src/renderer/painter_symbol.cpp
+++ b/src/renderer/painter_symbol.cpp
@@ -10,7 +10,7 @@
namespace mbgl {
void Painter::renderSymbol(SymbolBucket &bucket, std::shared_ptr<StyleLayer> layer_desc,
- const Tile::ID &/*id*/) {
+ const Tile::ID &/*id*/, const mat4 &matrix) {
// Abort early.
if (pass == Opaque) {
return;
diff --git a/src/renderer/raster_bucket.cpp b/src/renderer/raster_bucket.cpp
index 80f5039ac0..ddfff119e0 100644
--- a/src/renderer/raster_bucket.cpp
+++ b/src/renderer/raster_bucket.cpp
@@ -9,8 +9,8 @@ RasterBucket::RasterBucket(const std::shared_ptr<Texturepool> &texturepool, cons
raster(texturepool) {
}
-void RasterBucket::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id) {
- painter.renderRaster(*this, layer_desc, id);
+void RasterBucket::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID &id, const mat4 &matrix) {
+ painter.renderRaster(*this, layer_desc, id, matrix);
}
bool RasterBucket::setImage(const std::string &data) {
diff --git a/src/renderer/symbol_bucket.cpp b/src/renderer/symbol_bucket.cpp
index 4072cf0c61..459c235da7 100644
--- a/src/renderer/symbol_bucket.cpp
+++ b/src/renderer/symbol_bucket.cpp
@@ -23,8 +23,8 @@ SymbolBucket::SymbolBucket(const StyleBucketSymbol &properties, Collision &colli
: properties(properties), collision(collision) {}
void SymbolBucket::render(Painter &painter, std::shared_ptr<StyleLayer> layer_desc,
- const Tile::ID &id) {
- painter.renderSymbol(*this, layer_desc, id);
+ const Tile::ID &id, const mat4 &matrix) {
+ painter.renderSymbol(*this, layer_desc, id, matrix);
}
bool SymbolBucket::hasData() const { return hasTextData() || hasIconData(); }