committing so as to be revertable when i accidentally destroy the painter fns
This commit is contained in:
@@ -49,6 +49,7 @@ public:
|
||||
enum RenderPass { Opaque, Translucent };
|
||||
|
||||
void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass);
|
||||
void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, Tile::ID id);
|
||||
|
||||
// Forces a map update: always triggers a rerender.
|
||||
void update();
|
||||
@@ -178,10 +179,10 @@ private:
|
||||
|
||||
public:
|
||||
View &view;
|
||||
TransformState state;
|
||||
|
||||
private:
|
||||
Transform transform;
|
||||
TransformState state;
|
||||
|
||||
std::shared_ptr<FileSource> fileSource;
|
||||
|
||||
|
||||
@@ -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);
|
||||
//}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user