diff options
Diffstat (limited to 'src/mbgl/renderer/buckets/raster_bucket.cpp')
-rw-r--r-- | src/mbgl/renderer/buckets/raster_bucket.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/mbgl/renderer/buckets/raster_bucket.cpp b/src/mbgl/renderer/buckets/raster_bucket.cpp index 4a25959868..fa105fd38d 100644 --- a/src/mbgl/renderer/buckets/raster_bucket.cpp +++ b/src/mbgl/renderer/buckets/raster_bucket.cpp @@ -1,18 +1,26 @@ +#include <mbgl/gl/context.hpp> +#include <mbgl/programs/raster_program.hpp> #include <mbgl/renderer/buckets/raster_bucket.hpp> #include <mbgl/renderer/layers/render_raster_layer.hpp> -#include <mbgl/programs/raster_program.hpp> #include <mbgl/renderer/painter.hpp> -#include <mbgl/gl/context.hpp> +#include <mbgl/renderer/render_tile.hpp> namespace mbgl { - using namespace style; RasterBucket::RasterBucket(UnassociatedImage&& image_) : image(std::move(image_)) { } +RasterBucket::RasterBucket(RasterBucket&& other) : image(std::move(other.image)) { + uploaded = false; +} + void RasterBucket::upload(gl::Context& context) { - texture = context.createTexture(std::move(image)); + texture = context.createTexture(image); + if (vertices.vertexSize() > 0) { + vertexBuffer = context.createVertexBuffer(std::move(vertices)); + indexBuffer = context.createIndexBuffer(std::move(indices)); + } uploaded = true; } @@ -20,7 +28,14 @@ void RasterBucket::render(Painter& painter, PaintParameters& parameters, const RenderLayer& layer, const RenderTile& tile) { - painter.renderRaster(parameters, *this, *layer.as<RenderRasterLayer>(), tile); + painter.renderRaster(parameters, *this, *layer.as<RenderRasterLayer>(), tile.matrix, false); +} + +void RasterBucket::render(Painter& painter, + PaintParameters& parameters, + const RenderLayer& layer, + const mat4& matrix) { + painter.renderRaster(parameters, *this, *layer.as<RenderRasterLayer>(), matrix, true); } bool RasterBucket::hasData() const { |