diff options
Diffstat (limited to 'include/mbgl')
-rw-r--r-- | include/mbgl/gfx/renderable.hpp | 44 | ||||
-rw-r--r-- | include/mbgl/gl/renderable_resource.hpp | 17 |
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 |