[core] Eliminate Bucket::render
This commit is contained in:
@@ -38,10 +38,6 @@ public:
|
||||
// this only happens once when the bucket is being rendered for the first time.
|
||||
virtual void upload(gl::Context&) = 0;
|
||||
|
||||
// Every time this bucket is getting rendered, this function is called. This happens either
|
||||
// once or twice (for Opaque and Transparent render passes).
|
||||
virtual void render(Painter&, PaintParameters&, const RenderLayer&, const RenderTile&) = 0;
|
||||
|
||||
virtual bool hasData() const = 0;
|
||||
|
||||
virtual float getQueryRadius(const RenderLayer&) const {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <mbgl/renderer/buckets/circle_bucket.hpp>
|
||||
#include <mbgl/renderer/bucket_parameters.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/programs/circle_program.hpp>
|
||||
#include <mbgl/style/layers/circle_layer_impl.hpp>
|
||||
#include <mbgl/renderer/layers/render_circle_layer.hpp>
|
||||
@@ -34,13 +33,6 @@ void CircleBucket::upload(gl::Context& context) {
|
||||
uploaded = true;
|
||||
}
|
||||
|
||||
void CircleBucket::render(Painter& painter,
|
||||
PaintParameters& parameters,
|
||||
const RenderLayer& layer,
|
||||
const RenderTile& tile) {
|
||||
painter.renderCircle(parameters, *this, *layer.as<RenderCircleLayer>(), tile);
|
||||
}
|
||||
|
||||
bool CircleBucket::hasData() const {
|
||||
return !segments.empty();
|
||||
}
|
||||
|
||||
@@ -23,8 +23,6 @@ public:
|
||||
|
||||
void upload(gl::Context&) override;
|
||||
|
||||
void render(Painter&, PaintParameters&, const RenderLayer&, const RenderTile&) override;
|
||||
|
||||
float getQueryRadius(const RenderLayer&) const override;
|
||||
|
||||
gl::VertexVector<CircleLayoutVertex> vertices;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include <mbgl/renderer/buckets/fill_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/programs/fill_program.hpp>
|
||||
#include <mbgl/renderer/bucket_parameters.hpp>
|
||||
#include <mbgl/style/layers/fill_layer_impl.hpp>
|
||||
@@ -121,13 +120,6 @@ void FillBucket::upload(gl::Context& context) {
|
||||
uploaded = true;
|
||||
}
|
||||
|
||||
void FillBucket::render(Painter& painter,
|
||||
PaintParameters& parameters,
|
||||
const RenderLayer& layer,
|
||||
const RenderTile& tile) {
|
||||
painter.renderFill(parameters, *this, *layer.as<RenderFillLayer>(), tile);
|
||||
}
|
||||
|
||||
bool FillBucket::hasData() const {
|
||||
return !triangleSegments.empty() || !lineSegments.empty();
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ public:
|
||||
bool hasData() const override;
|
||||
|
||||
void upload(gl::Context&) override;
|
||||
void render(Painter&, PaintParameters&, const RenderLayer&, const RenderTile&) override;
|
||||
|
||||
float getQueryRadius(const RenderLayer&) const override;
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include <mbgl/renderer/buckets/fill_extrusion_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/programs/fill_extrusion_program.hpp>
|
||||
#include <mbgl/renderer/bucket_parameters.hpp>
|
||||
#include <mbgl/style/layers/fill_extrusion_layer_impl.hpp>
|
||||
@@ -154,13 +153,6 @@ void FillExtrusionBucket::upload(gl::Context& context) {
|
||||
uploaded = true;
|
||||
}
|
||||
|
||||
void FillExtrusionBucket::render(Painter& painter,
|
||||
PaintParameters& parameters,
|
||||
const RenderLayer& layer,
|
||||
const RenderTile& tile) {
|
||||
painter.renderFillExtrusion(parameters, *this, *layer.as<RenderFillExtrusionLayer>(), tile);
|
||||
}
|
||||
|
||||
bool FillExtrusionBucket::hasData() const {
|
||||
return !triangleSegments.empty();
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ public:
|
||||
bool hasData() const override;
|
||||
|
||||
void upload(gl::Context&) override;
|
||||
void render(Painter&, PaintParameters&, const RenderLayer&, const RenderTile&) override;
|
||||
|
||||
float getQueryRadius(const RenderLayer&) const override;
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include <mbgl/renderer/buckets/line_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/renderer/layers/render_line_layer.hpp>
|
||||
#include <mbgl/renderer/bucket_parameters.hpp>
|
||||
#include <mbgl/style/layers/line_layer_impl.hpp>
|
||||
@@ -458,13 +457,6 @@ void LineBucket::upload(gl::Context& context) {
|
||||
uploaded = true;
|
||||
}
|
||||
|
||||
void LineBucket::render(Painter& painter,
|
||||
PaintParameters& parameters,
|
||||
const RenderLayer& layer,
|
||||
const RenderTile& tile) {
|
||||
painter.renderLine(parameters, *this, *layer.as<RenderLineLayer>(), tile);
|
||||
}
|
||||
|
||||
bool LineBucket::hasData() const {
|
||||
return !segments.empty();
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ public:
|
||||
bool hasData() const override;
|
||||
|
||||
void upload(gl::Context&) override;
|
||||
void render(Painter&, PaintParameters&, const RenderLayer&, const RenderTile&) override;
|
||||
|
||||
float getQueryRadius(const RenderLayer&) const override;
|
||||
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
#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 {
|
||||
|
||||
@@ -16,6 +14,7 @@ RasterBucket::RasterBucket(PremultipliedImage&& image_) {
|
||||
RasterBucket::RasterBucket(std::shared_ptr<PremultipliedImage> image_): image(image_) {
|
||||
|
||||
}
|
||||
|
||||
void RasterBucket::upload(gl::Context& context) {
|
||||
if (!hasData()) {
|
||||
return;
|
||||
@@ -45,19 +44,6 @@ void RasterBucket::setImage(std::shared_ptr<PremultipliedImage> image_) {
|
||||
texture = {};
|
||||
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);
|
||||
}
|
||||
|
||||
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 {
|
||||
return !!image;
|
||||
|
||||
@@ -15,12 +15,8 @@ class RasterBucket : public Bucket {
|
||||
public:
|
||||
RasterBucket(PremultipliedImage&&);
|
||||
RasterBucket(std::shared_ptr<PremultipliedImage>);
|
||||
|
||||
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;
|
||||
|
||||
void clear();
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include <mbgl/renderer/buckets/symbol_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/renderer/layers/render_symbol_layer.hpp>
|
||||
#include <mbgl/renderer/bucket_parameters.hpp>
|
||||
#include <mbgl/style/layers/symbol_layer_impl.hpp>
|
||||
@@ -61,13 +60,6 @@ void SymbolBucket::upload(gl::Context& context) {
|
||||
uploaded = true;
|
||||
}
|
||||
|
||||
void SymbolBucket::render(Painter& painter,
|
||||
PaintParameters& parameters,
|
||||
const RenderLayer& layer,
|
||||
const RenderTile& tile) {
|
||||
painter.renderSymbol(parameters, *this, *layer.as<RenderSymbolLayer>(), tile);
|
||||
}
|
||||
|
||||
bool SymbolBucket::hasData() const {
|
||||
return hasTextData() || hasIconData() || hasCollisionBoxData();
|
||||
}
|
||||
|
||||
@@ -43,7 +43,6 @@ public:
|
||||
bool iconsNeedLinear);
|
||||
|
||||
void upload(gl::Context&) override;
|
||||
void render(Painter&, PaintParameters&, const RenderLayer&, const RenderTile&) override;
|
||||
bool hasData() const override;
|
||||
bool hasTextData() const;
|
||||
bool hasIconData() const;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <mbgl/renderer/layers/render_background_layer.hpp>
|
||||
#include <mbgl/style/layers/background_layer_impl.hpp>
|
||||
#include <mbgl/renderer/bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
@@ -34,4 +35,8 @@ bool RenderBackgroundLayer::hasTransition() const {
|
||||
return unevaluated.hasTransition();
|
||||
}
|
||||
|
||||
void RenderBackgroundLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
|
||||
painter.renderBackground(parameters, *this);
|
||||
}
|
||||
|
||||
} // namespace mbgl
|
||||
|
||||
@@ -14,6 +14,7 @@ public:
|
||||
void transition(const TransitionParameters&) override;
|
||||
void evaluate(const PropertyEvaluationParameters&) override;
|
||||
bool hasTransition() const override;
|
||||
void render(Painter&, PaintParameters&, RenderSource*) override;
|
||||
|
||||
std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override;
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#include <mbgl/renderer/layers/render_circle_layer.hpp>
|
||||
#include <mbgl/renderer/buckets/circle_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/tile/tile.hpp>
|
||||
#include <mbgl/style/layers/circle_layer_impl.hpp>
|
||||
#include <mbgl/geometry/feature_index.hpp>
|
||||
#include <mbgl/util/math.hpp>
|
||||
@@ -40,6 +43,18 @@ bool RenderCircleLayer::hasTransition() const {
|
||||
return unevaluated.hasTransition();
|
||||
}
|
||||
|
||||
void RenderCircleLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
|
||||
for (const RenderTile& tile : renderTiles) {
|
||||
Bucket* bucket = tile.tile.getBucket(*baseImpl);
|
||||
assert(dynamic_cast<CircleBucket*>(bucket));
|
||||
painter.renderCircle(
|
||||
parameters,
|
||||
*reinterpret_cast<CircleBucket*>(bucket),
|
||||
*this,
|
||||
tile);
|
||||
}
|
||||
}
|
||||
|
||||
bool RenderCircleLayer::queryIntersectsFeature(
|
||||
const GeometryCoordinates& queryGeometry,
|
||||
const GeometryTileFeature& feature,
|
||||
|
||||
@@ -14,6 +14,7 @@ public:
|
||||
void transition(const TransitionParameters&) override;
|
||||
void evaluate(const PropertyEvaluationParameters&) override;
|
||||
bool hasTransition() const override;
|
||||
void render(Painter&, PaintParameters&, RenderSource*) override;
|
||||
|
||||
bool queryIntersectsFeature(
|
||||
const GeometryCoordinates&,
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#include <mbgl/renderer/layers/render_fill_extrusion_layer.hpp>
|
||||
#include <mbgl/renderer/buckets/fill_extrusion_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/tile/tile.hpp>
|
||||
#include <mbgl/style/layers/fill_extrusion_layer_impl.hpp>
|
||||
#include <mbgl/geometry/feature_index.hpp>
|
||||
#include <mbgl/util/math.hpp>
|
||||
@@ -35,6 +38,18 @@ bool RenderFillExtrusionLayer::hasTransition() const {
|
||||
return unevaluated.hasTransition();
|
||||
}
|
||||
|
||||
void RenderFillExtrusionLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
|
||||
for (const RenderTile& tile : renderTiles) {
|
||||
Bucket* bucket = tile.tile.getBucket(*baseImpl);
|
||||
assert(dynamic_cast<FillExtrusionBucket*>(bucket));
|
||||
painter.renderFillExtrusion(
|
||||
parameters,
|
||||
*reinterpret_cast<FillExtrusionBucket*>(bucket),
|
||||
*this,
|
||||
tile);
|
||||
}
|
||||
}
|
||||
|
||||
bool RenderFillExtrusionLayer::queryIntersectsFeature(
|
||||
const GeometryCoordinates& queryGeometry,
|
||||
const GeometryTileFeature& feature,
|
||||
|
||||
@@ -14,6 +14,7 @@ public:
|
||||
void transition(const TransitionParameters&) override;
|
||||
void evaluate(const PropertyEvaluationParameters&) override;
|
||||
bool hasTransition() const override;
|
||||
void render(Painter&, PaintParameters&, RenderSource*) override;
|
||||
|
||||
bool queryIntersectsFeature(
|
||||
const GeometryCoordinates&,
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#include <mbgl/renderer/layers/render_fill_layer.hpp>
|
||||
#include <mbgl/renderer/buckets/fill_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/tile/tile.hpp>
|
||||
#include <mbgl/style/layers/fill_layer_impl.hpp>
|
||||
#include <mbgl/geometry/feature_index.hpp>
|
||||
#include <mbgl/util/math.hpp>
|
||||
@@ -50,6 +53,18 @@ bool RenderFillLayer::hasTransition() const {
|
||||
return unevaluated.hasTransition();
|
||||
}
|
||||
|
||||
void RenderFillLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
|
||||
for (const RenderTile& tile : renderTiles) {
|
||||
Bucket* bucket = tile.tile.getBucket(*baseImpl);
|
||||
assert(dynamic_cast<FillBucket*>(bucket));
|
||||
painter.renderFill(
|
||||
parameters,
|
||||
*reinterpret_cast<FillBucket*>(bucket),
|
||||
*this,
|
||||
tile);
|
||||
}
|
||||
}
|
||||
|
||||
bool RenderFillLayer::queryIntersectsFeature(
|
||||
const GeometryCoordinates& queryGeometry,
|
||||
const GeometryTileFeature& feature,
|
||||
|
||||
@@ -14,6 +14,7 @@ public:
|
||||
void transition(const TransitionParameters&) override;
|
||||
void evaluate(const PropertyEvaluationParameters&) override;
|
||||
bool hasTransition() const override;
|
||||
void render(Painter&, PaintParameters&, RenderSource*) override;
|
||||
|
||||
bool queryIntersectsFeature(
|
||||
const GeometryCoordinates&,
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#include <mbgl/renderer/layers/render_line_layer.hpp>
|
||||
#include <mbgl/renderer/buckets/line_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/tile/tile.hpp>
|
||||
#include <mbgl/style/layers/line_layer_impl.hpp>
|
||||
#include <mbgl/geometry/feature_index.hpp>
|
||||
#include <mbgl/util/math.hpp>
|
||||
@@ -43,6 +46,18 @@ bool RenderLineLayer::hasTransition() const {
|
||||
return unevaluated.hasTransition();
|
||||
}
|
||||
|
||||
void RenderLineLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
|
||||
for (const RenderTile& tile : renderTiles) {
|
||||
Bucket* bucket = tile.tile.getBucket(*baseImpl);
|
||||
assert(dynamic_cast<LineBucket*>(bucket));
|
||||
painter.renderLine(
|
||||
parameters,
|
||||
*reinterpret_cast<LineBucket*>(bucket),
|
||||
*this,
|
||||
tile);
|
||||
}
|
||||
}
|
||||
|
||||
optional<GeometryCollection> offsetLine(const GeometryCollection& rings, const double offset) {
|
||||
if (offset == 0) return {};
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ public:
|
||||
void transition(const TransitionParameters&) override;
|
||||
void evaluate(const PropertyEvaluationParameters&) override;
|
||||
bool hasTransition() const override;
|
||||
void render(Painter&, PaintParameters&, RenderSource*) override;
|
||||
|
||||
bool queryIntersectsFeature(
|
||||
const GeometryCoordinates&,
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
#include <mbgl/renderer/layers/render_raster_layer.hpp>
|
||||
#include <mbgl/renderer/bucket.hpp>
|
||||
#include <mbgl/style/layers/raster_layer_impl.hpp>
|
||||
#include <mbgl/gl/context.hpp>
|
||||
#include <mbgl/renderer/buckets/raster_bucket.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/tile/tile.hpp>
|
||||
#include <mbgl/renderer/sources/render_image_source.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/style/layers/raster_layer_impl.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
@@ -38,11 +37,18 @@ bool RenderRasterLayer::hasTransition() const {
|
||||
}
|
||||
|
||||
void RenderRasterLayer::render(Painter& painter, PaintParameters& parameters, RenderSource* source) {
|
||||
RenderLayer::render(painter, parameters, source);
|
||||
if (renderTiles.empty()) {
|
||||
RenderImageSource* imageSource = source->as<RenderImageSource>();
|
||||
if (imageSource) {
|
||||
imageSource->render(painter, parameters, *this);
|
||||
if (RenderImageSource* imageSource = source->as<RenderImageSource>()) {
|
||||
imageSource->render(painter, parameters, *this);
|
||||
} else {
|
||||
for (const RenderTile& tile : renderTiles) {
|
||||
Bucket* bucket = tile.tile.getBucket(*baseImpl);
|
||||
assert(dynamic_cast<RasterBucket*>(bucket));
|
||||
painter.renderRaster(
|
||||
parameters,
|
||||
*reinterpret_cast<RasterBucket*>(bucket),
|
||||
*this,
|
||||
tile.matrix,
|
||||
false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
#include <mbgl/renderer/layers/render_symbol_layer.hpp>
|
||||
#include <mbgl/layout/symbol_layout.hpp>
|
||||
#include <mbgl/renderer/bucket.hpp>
|
||||
#include <mbgl/renderer/buckets/symbol_bucket.hpp>
|
||||
#include <mbgl/renderer/bucket_parameters.hpp>
|
||||
#include <mbgl/renderer/property_evaluation_parameters.hpp>
|
||||
#include <mbgl/renderer/painter.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/tile/tile.hpp>
|
||||
#include <mbgl/style/layers/symbol_layer_impl.hpp>
|
||||
#include <mbgl/layout/symbol_layout.hpp>
|
||||
#include <mbgl/tile/geometry_tile_data.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
@@ -55,6 +58,18 @@ bool RenderSymbolLayer::hasTransition() const {
|
||||
return unevaluated.hasTransition();
|
||||
}
|
||||
|
||||
void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
|
||||
for (const RenderTile& tile : renderTiles) {
|
||||
Bucket* bucket = tile.tile.getBucket(*baseImpl);
|
||||
assert(dynamic_cast<SymbolBucket*>(bucket));
|
||||
painter.renderSymbol(
|
||||
parameters,
|
||||
*reinterpret_cast<SymbolBucket*>(bucket),
|
||||
*this,
|
||||
tile);
|
||||
}
|
||||
}
|
||||
|
||||
style::IconPaintProperties::PossiblyEvaluated RenderSymbolLayer::iconPaintProperties() const {
|
||||
return style::IconPaintProperties::PossiblyEvaluated {
|
||||
evaluated.get<style::IconOpacity>(),
|
||||
|
||||
@@ -66,6 +66,7 @@ public:
|
||||
void transition(const TransitionParameters&) override;
|
||||
void evaluate(const PropertyEvaluationParameters&) override;
|
||||
bool hasTransition() const override;
|
||||
void render(Painter&, PaintParameters&, RenderSource*) override;
|
||||
|
||||
style::IconPaintProperties::PossiblyEvaluated iconPaintProperties() const;
|
||||
style::TextPaintProperties::PossiblyEvaluated textPaintProperties() const;
|
||||
|
||||
@@ -287,10 +287,7 @@ void Painter::renderPass(PaintParameters& parameters,
|
||||
if (!layer.hasRenderPass(pass))
|
||||
continue;
|
||||
|
||||
if (layer.is<RenderBackgroundLayer>()) {
|
||||
MBGL_DEBUG_GROUP(context, "background");
|
||||
renderBackground(parameters, *layer.as<RenderBackgroundLayer>());
|
||||
} else if (layer.is<RenderFillExtrusionLayer>()) {
|
||||
if (layer.is<RenderFillExtrusionLayer>()) {
|
||||
const auto size = context.viewport.getCurrentValue().size;
|
||||
|
||||
if (!extrusionTexture || extrusionTexture->getSize() != size) {
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include <mbgl/renderer/layers/render_symbol_layer.hpp>
|
||||
#include <mbgl/style/types.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/tile/tile.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
@@ -68,14 +67,5 @@ void RenderLayer::setRenderTiles(std::vector<std::reference_wrapper<RenderTile>>
|
||||
renderTiles = std::move(tiles);
|
||||
}
|
||||
|
||||
void RenderLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
|
||||
for (auto& tileRef : renderTiles) {
|
||||
auto& tile = tileRef.get();
|
||||
auto bucket = tile.tile.getBucket(*baseImpl);
|
||||
bucket->render(painter, parameters, *this, tile);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} //namespace mbgl
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
// Checks whether this layer can be rendered.
|
||||
bool needsRendering(float zoom) const;
|
||||
|
||||
virtual void render(Painter&, PaintParameters&, RenderSource*);
|
||||
virtual void render(Painter&, PaintParameters&, RenderSource*) = 0;
|
||||
|
||||
// Check wether the given geometry intersects
|
||||
// with the feature
|
||||
|
||||
@@ -184,10 +184,10 @@ void RenderImageSource::update(Immutable<style::Source::Impl> baseImpl_,
|
||||
|
||||
void RenderImageSource::render(Painter& painter,
|
||||
PaintParameters& parameters,
|
||||
const RenderLayer& layer) {
|
||||
const RenderRasterLayer& layer) {
|
||||
if (isEnabled() && isLoaded() && !bucket->needsUpload()) {
|
||||
for (auto matrix : matrices) {
|
||||
bucket->render(painter, parameters, layer, matrix);
|
||||
painter.renderRaster(parameters, *bucket, layer, matrix, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,14 +5,10 @@
|
||||
#include <mbgl/style/sources/image_source_impl.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
class RenderLayer;
|
||||
|
||||
class RenderRasterLayer;
|
||||
class PaintParameters;
|
||||
class RasterBucket;
|
||||
class LatLng;
|
||||
|
||||
namespace gl {
|
||||
class Context;
|
||||
} // namespace gl
|
||||
|
||||
class RenderImageSource : public RenderSource {
|
||||
public:
|
||||
@@ -22,7 +18,7 @@ public:
|
||||
bool isLoaded() const final;
|
||||
|
||||
void startRender(Painter&) final;
|
||||
void render(Painter&, PaintParameters&, const RenderLayer&);
|
||||
void render(Painter&, PaintParameters&, const RenderRasterLayer&);
|
||||
void finishRender(Painter&) final;
|
||||
|
||||
void update(Immutable<style::Source::Impl>,
|
||||
|
||||
Reference in New Issue
Block a user