summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLauren Budorick <lauren@mapbox.com>2014-08-07 18:38:56 -0700
committerLauren Budorick <lauren@mapbox.com>2014-08-11 12:13:23 -0700
commitfb5c3a888d7ecac412c2a74112ce98ec0242e145 (patch)
treed60b1694a4be3c4516df0be9e9df4e1d021213a8 /src
parent54ed547f90329a4c123f875dc91be3dfc968fd4e (diff)
downloadqtlocation-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.cpp41
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);