summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/bucket.hpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2015-04-22 18:27:19 +0200
committerKonstantin Käfer <mail@kkaefer.com>2015-05-04 17:33:04 +0200
commit28b9b3f9d64207a03b6125b3e299efda59952a03 (patch)
treea332f0c57abb345a523fe494d57f3c77109c8203 /src/mbgl/renderer/bucket.hpp
parent839b19330ee7ca1b3cd42cf77dc4caa08eaf0a63 (diff)
downloadqtlocation-mapboxgl-28b9b3f9d64207a03b6125b3e299efda59952a03.tar.gz
add prepare() function
Diffstat (limited to 'src/mbgl/renderer/bucket.hpp')
-rw-r--r--src/mbgl/renderer/bucket.hpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mbgl/renderer/bucket.hpp b/src/mbgl/renderer/bucket.hpp
index 2ea73f9b97..282a6aa367 100644
--- a/src/mbgl/renderer/bucket.hpp
+++ b/src/mbgl/renderer/bucket.hpp
@@ -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;
+
};
}