textures binding to map, just the wrong textures -- but so much closer

This commit is contained in:
Lauren Budorick
2014-08-07 18:38:56 -07:00
parent 54ed547f90
commit fb5c3a888d
2 changed files with 31 additions and 15 deletions

View File

@@ -46,6 +46,9 @@ public:
void rerender();
void renderLayers(std::shared_ptr<StyleLayerGroup> group);
enum RenderPass { Opaque, Translucent };
void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass);
// Forces a map update: always triggers a rerender.
void update();
@@ -148,11 +151,9 @@ private:
// the stylesheet.
void prepare();
enum RenderPass { Opaque, Translucent };
// Unconditionally performs a render with the current map state.
void render();
void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass);
private:
bool async = false;

View File

@@ -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);