diff options
author | Lauren Budorick <lauren@mapbox.com> | 2014-08-08 15:50:35 -0700 |
---|---|---|
committer | Lauren Budorick <lauren@mapbox.com> | 2014-08-11 12:13:23 -0700 |
commit | 1ad2f26b9d753940e26d0ac3be96392feb73ae9e (patch) | |
tree | 1a9f6a799cae76d4255a3b8dbb2f5f9c8790dd72 | |
parent | 510aaef07fd4a26d39726e02998da2abc5d14649 (diff) | |
download | qtlocation-mapboxgl-1ad2f26b9d753940e26d0ac3be96392feb73ae9e.tar.gz |
VICTORY
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(); } |