summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/buckets/raster_bucket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/buckets/raster_bucket.cpp')
-rw-r--r--src/mbgl/renderer/buckets/raster_bucket.cpp21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/mbgl/renderer/buckets/raster_bucket.cpp b/src/mbgl/renderer/buckets/raster_bucket.cpp
index 49ec0065c3..ea35582196 100644
--- a/src/mbgl/renderer/buckets/raster_bucket.cpp
+++ b/src/mbgl/renderer/buckets/raster_bucket.cpp
@@ -16,34 +16,33 @@ void RasterBucket::upload(gl::Context& context) {
if (!texture) {
texture = context.createTexture(image);
}
- if (!vertices.empty()) {
- vertexBuffer = context.createVertexBuffer(std::move(vertices));
- indexBuffer = context.createIndexBuffer(std::move(indices));
+ if (!primitives.empty()) {
+ drawable.emplace(context, std::move(primitives));
}
uploaded = true;
}
void RasterBucket::clear() {
- vertexBuffer = {};
- indexBuffer = {};
- segments.clear();
- vertices.clear();
- indices.clear();
-
+ primitives = {};
+ drawable = std::experimental::nullopt;
uploaded = false;
}
+
void RasterBucket::render(Painter& painter,
PaintParameters& parameters,
const RenderLayer& layer,
const RenderTile& tile) {
- painter.renderRaster(parameters, *this, *layer.as<RenderRasterLayer>(), tile.matrix, false);
+ painter.renderRaster(parameters, *this, *layer.as<RenderRasterLayer>(), tile.matrix,
+ painter.rasterDrawable);
}
void RasterBucket::render(Painter& painter,
PaintParameters& parameters,
const RenderLayer& layer,
const mat4& matrix) {
- painter.renderRaster(parameters, *this, *layer.as<RenderRasterLayer>(), matrix, true);
+ if (drawable) {
+ painter.renderRaster(parameters, *this, *layer.as<RenderRasterLayer>(), matrix, *drawable);
+ }
}
bool RasterBucket::hasData() const {