diff options
author | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2017-04-20 12:39:51 -0700 |
---|---|---|
committer | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2017-06-01 15:38:01 -0700 |
commit | 1b86bf16b2cfc37b86e526673bb2e25de6adf9ee (patch) | |
tree | c236a5f8e7c4eea9a8e7560620671217a791074d /src/mbgl/renderer/buckets | |
parent | aa6647e910073edffbd1f3c087ed110927c38aeb (diff) | |
download | qtlocation-mapboxgl-1b86bf16b2cfc37b86e526673bb2e25de6adf9ee.tar.gz |
[core] Render Image Source
Diffstat (limited to 'src/mbgl/renderer/buckets')
-rw-r--r-- | src/mbgl/renderer/buckets/raster_bucket.cpp | 25 | ||||
-rw-r--r-- | src/mbgl/renderer/buckets/raster_bucket.hpp | 18 |
2 files changed, 37 insertions, 6 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 { diff --git a/src/mbgl/renderer/buckets/raster_bucket.hpp b/src/mbgl/renderer/buckets/raster_bucket.hpp index 334954e3f4..b7b1d312dc 100644 --- a/src/mbgl/renderer/buckets/raster_bucket.hpp +++ b/src/mbgl/renderer/buckets/raster_bucket.hpp @@ -1,22 +1,38 @@ #pragma once +#include <mbgl/gl/index_buffer.hpp> +#include <mbgl/gl/texture.hpp> +#include <mbgl/gl/vertex_buffer.hpp> +#include <mbgl/programs/raster_program.hpp> #include <mbgl/renderer/bucket.hpp> #include <mbgl/util/image.hpp> +#include <mbgl/util/mat4.hpp> #include <mbgl/util/optional.hpp> -#include <mbgl/gl/texture.hpp> namespace mbgl { class RasterBucket : public Bucket { public: RasterBucket(UnassociatedImage&&); + RasterBucket(RasterBucket&&); void upload(gl::Context&) override; void render(Painter&, PaintParameters&, const RenderLayer&, const RenderTile&) override; + void render(Painter& painter, + PaintParameters& parameters, + const RenderLayer& layer, + const mat4& matrix); bool hasData() const override; UnassociatedImage image; optional<gl::Texture> texture; + + gl::VertexVector<RasterLayoutVertex> vertices; + gl::IndexVector<gl::Triangles> indices; + gl::SegmentVector<RasterAttributes> segments; + + optional<gl::VertexBuffer<RasterLayoutVertex>> vertexBuffer; + optional<gl::IndexBuffer<gl::Triangles>> indexBuffer; }; } // namespace mbgl |