diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2019-04-02 22:35:46 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2019-04-05 11:49:17 +0200 |
commit | d7aaf83421261087a99d18d92eca9637c1bf72f8 (patch) | |
tree | df938a5b6fe40c9e665e028285d28eb88e0dfea2 /src/mbgl/gfx | |
parent | b1a2513b61761d09b3ae08904c03d28caedd09fe (diff) | |
download | qtlocation-mapboxgl-d7aaf83421261087a99d18d92eca9637c1bf72f8.tar.gz |
[core] introduce gfx::RenderPass
Diffstat (limited to 'src/mbgl/gfx')
-rw-r--r-- | src/mbgl/gfx/command_encoder.hpp | 7 | ||||
-rw-r--r-- | src/mbgl/gfx/program.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/gfx/render_pass.hpp | 41 |
3 files changed, 50 insertions, 0 deletions
diff --git a/src/mbgl/gfx/command_encoder.hpp b/src/mbgl/gfx/command_encoder.hpp index f095c5b867..145c2bef82 100644 --- a/src/mbgl/gfx/command_encoder.hpp +++ b/src/mbgl/gfx/command_encoder.hpp @@ -2,9 +2,14 @@ #include <mbgl/gfx/debug_group.hpp> +#include <memory> + namespace mbgl { namespace gfx { +class RenderPassDescriptor; +class RenderPass; + class CommandEncoder { protected: explicit CommandEncoder() = default; @@ -21,6 +26,8 @@ public: DebugGroup<CommandEncoder> createDebugGroup(const char* name) { return { *this, name }; } + + virtual std::unique_ptr<RenderPass> createRenderPass(const char* name, const RenderPassDescriptor&) = 0; }; } // namespace gfx diff --git a/src/mbgl/gfx/program.hpp b/src/mbgl/gfx/program.hpp index 94ba3b18ef..b636bc2654 100644 --- a/src/mbgl/gfx/program.hpp +++ b/src/mbgl/gfx/program.hpp @@ -13,6 +13,7 @@ class ColorMode; class CullFaceMode; class DrawScope; class IndexBuffer; +class RenderPass; template <class> class UniformValues; template <class> class AttributeBindings; template <class> class TextureBindings; @@ -35,6 +36,7 @@ public: using TextureList = typename Name::TextureList; virtual void draw(Context&, + RenderPass&, const DrawMode&, const DepthMode&, const StencilMode&, diff --git a/src/mbgl/gfx/render_pass.hpp b/src/mbgl/gfx/render_pass.hpp new file mode 100644 index 0000000000..db5ba661ba --- /dev/null +++ b/src/mbgl/gfx/render_pass.hpp @@ -0,0 +1,41 @@ +#pragma once + +#include <mbgl/gfx/debug_group.hpp> +#include <mbgl/util/color.hpp> +#include <mbgl/util/optional.hpp> + +#include <cstdint> + +namespace mbgl { +namespace gfx { + +class Renderable; + +class RenderPassDescriptor { +public: + Renderable& renderable; + optional<Color> clearColor; + optional<float> clearDepth; + optional<int32_t> clearStencil; +}; + +class RenderPass { +protected: + RenderPass() = default; + + friend class DebugGroup<RenderPass>; + virtual void pushDebugGroup(const char* name) = 0; + virtual void popDebugGroup() = 0; + +public: + virtual ~RenderPass() = default; + RenderPass(const RenderPass&) = delete; + RenderPass& operator=(const RenderPass&) = delete; + + DebugGroup<RenderPass> createDebugGroup(const char* name) { + return { *this, name }; + } +}; + +} // namespace gfx +} // namespace mbgl |