summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/buckets
diff options
context:
space:
mode:
authorAsheem Mamoowala <asheem.mamoowala@mapbox.com>2017-04-20 12:39:51 -0700
committerAsheem Mamoowala <asheem.mamoowala@mapbox.com>2017-06-01 15:38:01 -0700
commit1b86bf16b2cfc37b86e526673bb2e25de6adf9ee (patch)
treec236a5f8e7c4eea9a8e7560620671217a791074d /src/mbgl/renderer/buckets
parentaa6647e910073edffbd1f3c087ed110927c38aeb (diff)
downloadqtlocation-mapboxgl-1b86bf16b2cfc37b86e526673bb2e25de6adf9ee.tar.gz
[core] Render Image Source
Diffstat (limited to 'src/mbgl/renderer/buckets')
-rw-r--r--src/mbgl/renderer/buckets/raster_bucket.cpp25
-rw-r--r--src/mbgl/renderer/buckets/raster_bucket.hpp18
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