diff options
author | Lauren Budorick <lauren@mapbox.com> | 2014-08-07 18:38:56 -0700 |
---|---|---|
committer | Lauren Budorick <lauren@mapbox.com> | 2014-08-11 12:13:23 -0700 |
commit | fb5c3a888d7ecac412c2a74112ce98ec0242e145 (patch) | |
tree | d60b1694a4be3c4516df0be9e9df4e1d021213a8 /src | |
parent | 54ed547f90329a4c123f875dc91be3dfc968fd4e (diff) | |
download | qtlocation-mapboxgl-fb5c3a888d7ecac412c2a74112ce98ec0242e145.tar.gz |
textures binding to map, just the wrong textures -- but so much closer
Diffstat (limited to 'src')
-rw-r--r-- | src/renderer/painter_raster.cpp | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/src/renderer/painter_raster.cpp b/src/renderer/painter_raster.cpp index dcf88f4e53..e752cce87c 100644 --- a/src/renderer/painter_raster.cpp +++ b/src/renderer/painter_raster.cpp @@ -1,9 +1,12 @@ #include <mbgl/renderer/painter.hpp> #include <mbgl/renderer/raster_bucket.hpp> #include <mbgl/style/style_layer.hpp> +#include <mbgl/style/style_layer_group.hpp> #include <mbgl/util/std.hpp> #include <mbgl/map/map.hpp> +#include <iterator> + using namespace mbgl; void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id) { @@ -19,25 +22,35 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay preparePrerender(bucket); - const RasterProperties modifiedProperties = [&]{ - RasterProperties modifiedProperties = properties; - modifiedProperties.opacity = 1; // figure out why this was here - return modifiedProperties; - }(); +// const RasterProperties modifiedProperties = [&]{ +// RasterProperties modifiedProperties = properties; +// modifiedProperties.opacity = 1; // figure out why this was here +// return modifiedProperties; +// }(); const int buffer = bucket.properties.buffer * 4096.0f; -// const mat4 vtxMatrix = [&]{ -// mat4 vtxMatrix; -// matrix::ortho(vtxMatrix, -buffer, 4096 + buffer, -4096 - buffer, buffer, 0, 1); -// matrix::translate(vtxMatrix, vtxMatrix, 0, -4096, 0); -// return vtxMatrix; -// }(); + const mat4 oldMatrix = matrix; -// TODO set painter->matrix = vtxMatrix; ? + const mat4 preMatrix = [&]{ + mat4 vtxMatrix; + matrix::ortho(vtxMatrix, -buffer, 4096 + buffer, -4096 - buffer, buffer, 0, 1); + matrix::translate(vtxMatrix, vtxMatrix, 0, -4096, 0); + return vtxMatrix; + }(); + matrix = preMatrix; + + // call updateTiles to get parsed data for sublayers map.updateTiles(); - map.renderLayers(layer_desc->layers); + + 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); + setTranslucent(); + map.renderLayer(*it, Map::RenderPass::Translucent); + } if (bucket.properties.blur > 0) { bucket.texture.blur(*this, bucket.properties.blur); @@ -46,6 +59,8 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay bucket.texture.unbindFramebuffer(); finishPrerender(bucket); + matrix = oldMatrix; + } renderPrerenderedTexture(bucket); |