#pragma once #include #include "Mesh.hpp" namespace MC { class BindableMesh { public: void bind() const; void unbind(); size_t size() const; private: BindableMesh(uint32_t vao, size_t vertex_count) : m_vao(vao), m_vertex_count(vertex_count) {}; uint32_t m_vao; size_t m_vertex_count; friend class Binder; }; class Binder { public: Binder() = default;; static BindableMesh load(Mesh& mesh); private: static uint32_t create_vao(); static uint32_t unbind_vao(); static void store_in_attribute_list(uint32_t attribute, size_t size, float* data, size_t data_size); static void store_indices(uint32_t* indices, size_t indices_size); }; }