summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-04-01 13:48:20 +0200
committerKonstantin Käfer <mail@kkaefer.com>2019-04-05 11:49:17 +0200
commit865f8a6c03540e329ed6caef354799fb58b7ab6e (patch)
tree8c748a0ef16dc88ed0ceeadea71f20bfd99cdf96 /include
parentebd850803278a6ffbca0bc8a5b96d415b239aeb8 (diff)
downloadqtlocation-mapboxgl-865f8a6c03540e329ed6caef354799fb58b7ab6e.tar.gz
[core] add gfx::Renderable and gfx::OffscreenTexture
Diffstat (limited to 'include')
-rw-r--r--include/mbgl/gfx/renderable.hpp44
-rw-r--r--include/mbgl/gl/renderable_resource.hpp17
2 files changed, 61 insertions, 0 deletions
diff --git a/include/mbgl/gfx/renderable.hpp b/include/mbgl/gfx/renderable.hpp
new file mode 100644
index 0000000000..3a973e6693
--- /dev/null
+++ b/include/mbgl/gfx/renderable.hpp
@@ -0,0 +1,44 @@
+#pragma once
+
+#include <mbgl/util/size.hpp>
+
+#include <memory>
+#include <cassert>
+
+namespace mbgl {
+namespace gfx {
+
+class RenderableResource {
+protected:
+ explicit RenderableResource() = default;
+
+public:
+ virtual ~RenderableResource() = default;
+ RenderableResource(const RenderableResource&) = delete;
+ RenderableResource& operator=(const RenderableResource&) = delete;
+};
+
+class Renderable {
+protected:
+ Renderable(const Size size_, std::unique_ptr<RenderableResource> resource_)
+ : size(size_), resource(std::move(resource_)) {
+ }
+
+public:
+ Size getSize() const {
+ return size;
+ }
+
+ template <typename T>
+ T& getResource() const {
+ assert(resource);
+ return static_cast<T&>(*resource);
+ }
+
+protected:
+ Size size;
+ std::unique_ptr<RenderableResource> resource;
+};
+
+} // namespace gfx
+} // namespace mbgl
diff --git a/include/mbgl/gl/renderable_resource.hpp b/include/mbgl/gl/renderable_resource.hpp
new file mode 100644
index 0000000000..0be0ae9c67
--- /dev/null
+++ b/include/mbgl/gl/renderable_resource.hpp
@@ -0,0 +1,17 @@
+#pragma once
+
+#include <mbgl/gfx/renderable.hpp>
+
+namespace mbgl {
+namespace gl {
+
+class RenderableResource : public gfx::RenderableResource {
+protected:
+ explicit RenderableResource() = default;
+
+public:
+ virtual void bind() = 0;
+};
+
+} // namespace gl
+} // namespace mbgl