[core] RenderLayer::setRenderTiles(RenderTiles) -> prepare(LayerPrepareParameters)
RenderLayer::prepare() is responsible for the complete initialization of a render layer, so that it can render.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include <mbgl/renderer/buckets/symbol_bucket.hpp>
|
||||
#include <mbgl/renderer/bucket_parameters.hpp>
|
||||
#include <mbgl/renderer/property_evaluation_parameters.hpp>
|
||||
#include <mbgl/renderer/render_source.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/renderer/upload_parameters.hpp>
|
||||
#include <mbgl/renderer/paint_parameters.hpp>
|
||||
@@ -652,9 +653,9 @@ style::TextPaintProperties::PossiblyEvaluated RenderSymbolLayer::textPaintProper
|
||||
};
|
||||
}
|
||||
|
||||
void RenderSymbolLayer::setRenderTiles(RenderTiles tiles, const TransformState& state) {
|
||||
renderTiles = std::move(tiles);
|
||||
const auto comp = [bearing = state.getBearing()](const RenderTile& a, const RenderTile& b) {
|
||||
void RenderSymbolLayer::prepare(const LayerPrepareParameters& params) {
|
||||
renderTiles = params.source->getRenderTiles();
|
||||
const auto comp = [bearing = params.state.getBearing()](const RenderTile& a, const RenderTile& b) {
|
||||
Point<float> pa(a.id.canonical.x, a.id.canonical.y);
|
||||
Point<float> pb(b.id.canonical.x, b.id.canonical.y);
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ private:
|
||||
bool hasCrossfade() const override;
|
||||
void upload(gfx::UploadPass&, UploadParameters&) override;
|
||||
void render(PaintParameters&, RenderSource*) override;
|
||||
void setRenderTiles(RenderTiles, const TransformState&) override;
|
||||
void prepare(const LayerPrepareParameters&) override;
|
||||
|
||||
// Paint properties
|
||||
style::SymbolPaintProperties::Unevaluated unevaluated;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <mbgl/renderer/render_layer.hpp>
|
||||
#include <mbgl/renderer/paint_parameters.hpp>
|
||||
#include <mbgl/renderer/render_source.hpp>
|
||||
#include <mbgl/renderer/render_tile.hpp>
|
||||
#include <mbgl/style/types.hpp>
|
||||
#include <mbgl/style/layer.hpp>
|
||||
@@ -44,8 +45,9 @@ bool RenderLayer::supportsZoom(float zoom) const {
|
||||
return baseImpl->minZoom <= zoom && baseImpl->maxZoom >= zoom;
|
||||
}
|
||||
|
||||
void RenderLayer::setRenderTiles(RenderTiles tiles, const TransformState&) {
|
||||
renderTiles = filterRenderTiles(std::move(tiles));
|
||||
void RenderLayer::prepare(const LayerPrepareParameters& params) {
|
||||
assert(params.source);
|
||||
renderTiles = filterRenderTiles(params.source->getRenderTiles());
|
||||
}
|
||||
|
||||
optional<Color> RenderLayer::getSolidBackground() const {
|
||||
|
||||
@@ -34,6 +34,12 @@ public:
|
||||
bool rotateWithMap;
|
||||
};
|
||||
|
||||
class LayerPrepareParameters {
|
||||
public:
|
||||
RenderSource* source;
|
||||
const TransformState& state;
|
||||
};
|
||||
|
||||
class RenderLayer {
|
||||
protected:
|
||||
RenderLayer(Immutable<style::LayerProperties>);
|
||||
@@ -84,8 +90,7 @@ public:
|
||||
const float,
|
||||
const mat4&) const { return false; };
|
||||
|
||||
using RenderTiles = std::vector<std::reference_wrapper<RenderTile>>;
|
||||
virtual void setRenderTiles(RenderTiles, const TransformState&);
|
||||
virtual void prepare(const LayerPrepareParameters&);
|
||||
|
||||
const std::vector<LayerPlacementData>& getPlacementData() const {
|
||||
return placementData;
|
||||
@@ -107,6 +112,7 @@ protected:
|
||||
void checkRenderability(const PaintParameters&, uint32_t activeBindingCount);
|
||||
|
||||
protected:
|
||||
using RenderTiles = std::vector<std::reference_wrapper<RenderTile>>;
|
||||
// Stores current set of tiles to be rendered for this layer.
|
||||
RenderTiles renderTiles;
|
||||
|
||||
|
||||
@@ -300,13 +300,12 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
|
||||
}
|
||||
}
|
||||
|
||||
// Set render tiles to the render items.
|
||||
for (auto& renderItem : renderItems) {
|
||||
if (!renderItem.source) {
|
||||
continue;
|
||||
}
|
||||
RenderLayer& renderLayer = renderItem.layer;
|
||||
renderLayer.setRenderTiles(renderItem.source->getRenderTiles(), updateParameters.transformState);
|
||||
renderLayer.prepare({renderItem.source, updateParameters.transformState});
|
||||
if (renderLayer.needsPlacement()) {
|
||||
layersNeedPlacement.emplace_back(renderLayer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user