diff options
author | Lauren Budorick <lauren@mapbox.com> | 2014-08-08 13:07:20 -0700 |
---|---|---|
committer | Lauren Budorick <lauren@mapbox.com> | 2014-08-11 12:13:23 -0700 |
commit | 4083b534d7e6df767614791dad275f2b20de87d5 (patch) | |
tree | 0dbd9e3f1c7806dc9ff607fd4e031b8fdd1e29e8 /src | |
parent | 2be006fb0027970398d387d1d759adaa9b10e426 (diff) | |
download | qtlocation-mapboxgl-4083b534d7e6df767614791dad275f2b20de87d5.tar.gz |
committing so as to be revertable when i accidentally destroy the painter fns
Diffstat (limited to 'src')
-rw-r--r-- | src/map/map.cpp | 62 | ||||
-rw-r--r-- | src/renderer/painter_raster.cpp | 18 |
2 files changed, 77 insertions, 3 deletions
diff --git a/src/map/map.cpp b/src/map/map.cpp index 54d77bd36d..3db6e11715 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -719,3 +719,65 @@ void Map::renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass) { style_source.source->render(painter, layer_desc); } } + +//void Map::renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, Tile::ID &id) { +// if (!layer_desc->bucket) { +// fprintf(stderr, "[WARNING] layer '%s' is missing bucket\n", layer_desc->id.c_str()); +// return; +// } +// +// if (!layer_desc->bucket->style_source) { +// fprintf(stderr, "[WARNING] can't find source for layer '%s'\n", layer_desc->id.c_str()); +// return; +// } +// +// StyleSource &style_source = *layer_desc->bucket->style_source; +// +// // Skip this layer if there is no data. +// if (!style_source.source) { +// return; +// } +// +// // Skip this layer if it's outside the range of min/maxzoom. +// // This may occur when there /is/ a bucket created for this layer, but the min/max-zoom +// // is set to a fractional value, or value that is larger than the source maxzoom. +// const double zoom = state.getZoom(); +// if (layer_desc->bucket->min_zoom > zoom || +// layer_desc->bucket->max_zoom <= zoom) { +// return; +// } +// +// // Abort early if we can already deduce from the bucket type that +// // we're not going to render anything anyway during this pass. +// switch (layer_desc->type) { +// case StyleLayerType::Fill: +// if (!layer_desc->getProperties<FillProperties>().isVisible()) return; +// break; +// case StyleLayerType::Line: +// if (pass == Opaque) return; +// if (!layer_desc->getProperties<LineProperties>().isVisible()) return; +// break; +// case StyleLayerType::Icon: +// if (pass == Opaque) return; +// if (!layer_desc->getProperties<IconProperties>().isVisible()) return; +// break; +// case StyleLayerType::Text: +// if (pass == Opaque) return; +// if (!layer_desc->getProperties<TextProperties>().isVisible()) return; +// break; +// case StyleLayerType::Raster: +// if (pass == Opaque) return; +// if (!layer_desc->getProperties<RasterProperties>().isVisible()) return; +// break; +// default: +// break; +// } +// +// if (debug::renderTree) { +// std::cout << std::string(indent * 4, ' ') << "- " << layer_desc->id << " (" +// << layer_desc->type << ")" << std::endl; +// } +//// style_source.source->render(painter, layer_desc); +// painter.renderTileLayer(id, layer_desc); +//} + diff --git a/src/renderer/painter_raster.cpp b/src/renderer/painter_raster.cpp index fd81a490fb..1462af76b6 100644 --- a/src/renderer/painter_raster.cpp +++ b/src/renderer/painter_raster.cpp @@ -1,9 +1,11 @@ #include <mbgl/renderer/painter.hpp> +#include <mbgl/platform/gl.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 <mbgl/map/transform.hpp> using namespace mbgl; @@ -28,7 +30,7 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay const int buffer = bucket.properties.buffer * 4096.0f; - const mat4 oldMatrix = matrix; + const mat4 oldMatrix = vtxMatrix; const mat4 preMatrix = [&]{ mat4 vtxMatrix; @@ -37,7 +39,15 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay return vtxMatrix; }(); - matrix = preMatrix; +// *id.matrix = vtxMatrix; + + + map.state.matrixFor(matrix, id); + matrix::ortho(vtxMatrix, -buffer, 4096 + buffer, -4096 - buffer, buffer, 0, 1); + matrix::translate(vtxMatrix, vtxMatrix, 0, -4096, 0); + + +// glUniformMatrix4fv(matrix, 1, GL_FALSE, preMatrix.data()); // call updateTiles to get parsed data for sublayers map.updateTiles(); @@ -49,6 +59,8 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay setTranslucent(); map.renderLayer(*it, Map::RenderPass::Translucent); } + +// TODO make a separate renderLayer overload that takes a prerendered + tileID if (bucket.properties.blur > 0) { bucket.texture.blur(*this, bucket.properties.blur); @@ -57,7 +69,7 @@ void Painter::renderRaster(RasterBucket& bucket, std::shared_ptr<StyleLayer> lay bucket.texture.unbindFramebuffer(); finishPrerender(bucket); - matrix = oldMatrix; +// Tile(id).matrix = oldMatrix; } |