add prepare() function
This commit is contained in:
@@ -10,11 +10,32 @@ class Painter;
|
||||
class StyleLayer;
|
||||
class TileID;
|
||||
|
||||
enum class RenderPass : uint8_t {
|
||||
Prepare = 1 << 0,
|
||||
Opaque = 1 << 1,
|
||||
Translucent = 1 << 2,
|
||||
};
|
||||
|
||||
class Bucket : private util::noncopyable {
|
||||
public:
|
||||
// As long as this bucket has a Prepare render pass, this function is getting called. Typically,
|
||||
// this only happens once when the bucket is being rendered for the first time.
|
||||
virtual void prepare() = 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&, const StyleLayer&, const TileID&, const mat4&) = 0;
|
||||
|
||||
virtual ~Bucket() {}
|
||||
|
||||
inline bool hasRenderPass(RenderPass pass) const {
|
||||
return static_cast<std::underlying_type<RenderPass>::type>(renderPass) &
|
||||
static_cast<std::underlying_type<RenderPass>::type>(pass);
|
||||
}
|
||||
|
||||
protected:
|
||||
RenderPass renderPass = RenderPass::Prepare;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -16,8 +16,10 @@ DebugBucket::DebugBucket(DebugFontBuffer& fontBuffer_)
|
||||
: fontBuffer(fontBuffer_) {
|
||||
}
|
||||
|
||||
void DebugBucket::render(Painter &painter, const StyleLayer & /*layer_desc*/,
|
||||
const TileID & /*id*/, const mat4 &matrix) {
|
||||
void DebugBucket::prepare() {
|
||||
}
|
||||
|
||||
void DebugBucket::render(Painter& painter, const StyleLayer&, const TileID&, const mat4& matrix) {
|
||||
painter.renderDebugText(*this, matrix);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ class DebugBucket : public Bucket {
|
||||
public:
|
||||
DebugBucket(DebugFontBuffer& fontBuffer);
|
||||
|
||||
void render(Painter &painter, const StyleLayer &layer_desc, const TileID &id,
|
||||
const mat4 &matrix) override;
|
||||
void prepare() override;
|
||||
void render(Painter&, const StyleLayer&, const TileID&, const mat4&) override;
|
||||
|
||||
void drawLines(PlainShader& shader);
|
||||
void drawPoints(PlainShader& shader);
|
||||
|
||||
@@ -200,8 +200,13 @@ void FillBucket::tessellate() {
|
||||
lineGroup.vertex_length += total_vertex_count;
|
||||
}
|
||||
|
||||
void FillBucket::render(Painter &painter, const StyleLayer &layer_desc, const TileID &id,
|
||||
const mat4 &matrix) {
|
||||
void FillBucket::prepare() {
|
||||
}
|
||||
|
||||
void FillBucket::render(Painter& painter,
|
||||
const StyleLayer& layer_desc,
|
||||
const TileID& id,
|
||||
const mat4& matrix) {
|
||||
painter.renderFill(*this, layer_desc, id, matrix);
|
||||
}
|
||||
|
||||
|
||||
@@ -33,8 +33,8 @@ public:
|
||||
LineElementsBuffer &lineElementsBuffer);
|
||||
~FillBucket() override;
|
||||
|
||||
void render(Painter &painter, const StyleLayer &layer_desc, const TileID &id,
|
||||
const mat4 &matrix) override;
|
||||
void prepare() override;
|
||||
void render(Painter&, const StyleLayer&, const TileID&, const mat4&) override;
|
||||
bool hasData() const;
|
||||
|
||||
void addGeometry(const GeometryCollection&);
|
||||
|
||||
@@ -342,6 +342,9 @@ void LineBucket::addCurrentVertex(const Coordinate& currentVertex,
|
||||
e2 = e3;
|
||||
}
|
||||
|
||||
void LineBucket::prepare() {
|
||||
}
|
||||
|
||||
void LineBucket::render(Painter& painter,
|
||||
const StyleLayer& layer_desc,
|
||||
const TileID& id,
|
||||
|
||||
@@ -28,8 +28,8 @@ public:
|
||||
LineBucket(LineVertexBuffer &vertexBuffer, TriangleElementsBuffer &triangleElementsBuffer);
|
||||
~LineBucket() override;
|
||||
|
||||
void render(Painter &painter, const StyleLayer &layer_desc, const TileID &id,
|
||||
const mat4 &matrix) override;
|
||||
void prepare() override;
|
||||
void render(Painter&, const StyleLayer&, const TileID&, const mat4&) override;
|
||||
bool hasData() const;
|
||||
|
||||
void addGeometry(const GeometryCollection&);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <mbgl/map/transform_state.hpp>
|
||||
|
||||
#include <mbgl/renderer/frame_history.hpp>
|
||||
#include <mbgl/renderer/bucket.hpp>
|
||||
|
||||
#include <mbgl/geometry/vao.hpp>
|
||||
#include <mbgl/geometry/static_vertex_buffer.hpp>
|
||||
@@ -21,8 +22,6 @@
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
enum class RenderPass : bool { Opaque, Translucent };
|
||||
|
||||
class Style;
|
||||
class StyleLayer;
|
||||
class Tile;
|
||||
|
||||
@@ -13,8 +13,13 @@ RasterBucket::RasterBucket(TexturePool& texturePool, const StyleLayoutRaster& la
|
||||
raster(texturePool) {
|
||||
}
|
||||
|
||||
void RasterBucket::render(Painter &painter, const StyleLayer &layer_desc, const TileID &id,
|
||||
const mat4 &matrix) {
|
||||
void RasterBucket::prepare() {
|
||||
}
|
||||
|
||||
void RasterBucket::render(Painter& painter,
|
||||
const StyleLayer& layer_desc,
|
||||
const TileID& id,
|
||||
const mat4& matrix) {
|
||||
painter.renderRaster(*this, layer_desc, id, matrix);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@ class RasterBucket : public Bucket {
|
||||
public:
|
||||
RasterBucket(TexturePool&, const StyleLayoutRaster&);
|
||||
|
||||
void render(Painter &painter, const StyleLayer &layer_desc, const TileID &id,
|
||||
const mat4 &matrix) override;
|
||||
void prepare() override;
|
||||
void render(Painter&, const StyleLayer&, const TileID&, const mat4&) override;
|
||||
bool hasData() const;
|
||||
|
||||
bool setImage(const std::string &data);
|
||||
|
||||
@@ -36,8 +36,13 @@ SymbolBucket::~SymbolBucket() {
|
||||
// Do not remove. header file only contains forward definitions to unique pointers.
|
||||
}
|
||||
|
||||
void SymbolBucket::render(Painter &painter, const StyleLayer &layer_desc, const TileID &id,
|
||||
const mat4 &matrix) {
|
||||
void SymbolBucket::prepare() {
|
||||
}
|
||||
|
||||
void SymbolBucket::render(Painter& painter,
|
||||
const StyleLayer& layer_desc,
|
||||
const TileID& id,
|
||||
const mat4& matrix) {
|
||||
painter.renderSymbol(*this, layer_desc, id, matrix);
|
||||
}
|
||||
|
||||
|
||||
@@ -55,8 +55,8 @@ public:
|
||||
SymbolBucket(Collision &collision);
|
||||
~SymbolBucket() override;
|
||||
|
||||
void render(Painter &painter, const StyleLayer &layer_desc, const TileID &id,
|
||||
const mat4 &matrix) override;
|
||||
void prepare() override;
|
||||
void render(Painter&, const StyleLayer&, const TileID&, const mat4&) override;
|
||||
bool hasData() const;
|
||||
bool hasTextData() const;
|
||||
bool hasIconData() const;
|
||||
|
||||
Reference in New Issue
Block a user