#pragma once #include "core/memory.h" #include "vertex_buffer.h" #include "index_buffer.h" #include namespace Donut { class VertexArray { public: virtual ~VertexArray() = default; virtual auto bind() const -> void = 0; virtual auto unbind() const -> void = 0; virtual auto add_vertex_buffer(const Ref& vertex_buffer) -> void = 0; virtual auto set_index_buffer(const Ref& index_buffer) -> void = 0; virtual auto get_vertex_buffers() const -> const std::vector>& = 0; virtual auto get_index_buffer() const -> const Ref& = 0; static auto create() -> VertexArray*; }; };