#pragma once #include #include namespace mbgl { namespace gfx { class VertexBufferResource { protected: VertexBufferResource() = default; public: virtual ~VertexBufferResource() = default; }; // This class has a template argument that we use to specify the vertex type. It is not used by // the implementation, but serves type checking purposes during build time. template class VertexBuffer { public: VertexBuffer(const std::size_t elements_, std::unique_ptr&& resource_) : elements(elements_), resource(std::move(resource_)) { } std::size_t elements; template T& getResource() const { assert(resource); return static_cast(*resource); } protected: std::unique_ptr resource; }; } // namespace gfx } // namespace mbgl