diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-04-22 18:27:19 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-05-04 17:33:04 +0200 |
commit | 28b9b3f9d64207a03b6125b3e299efda59952a03 (patch) | |
tree | a332f0c57abb345a523fe494d57f3c77109c8203 /src/mbgl/renderer/bucket.hpp | |
parent | 839b19330ee7ca1b3cd42cf77dc4caa08eaf0a63 (diff) | |
download | qtlocation-mapboxgl-28b9b3f9d64207a03b6125b3e299efda59952a03.tar.gz |
add prepare() function
Diffstat (limited to 'src/mbgl/renderer/bucket.hpp')
-rw-r--r-- | src/mbgl/renderer/bucket.hpp | 21 |
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; + }; } |