#ifndef VERTEX_ARRAY_HPP
#define VERTEX_ARRAY_HPP

#include "open_engine/renderer/buffer.hpp"

#include <vector>

namespace OpenEngine {
    class VertexArray
    {
        public:
            virtual ~VertexArray() = default;

            virtual void Bind() const = 0;
            virtual void UnBind() const = 0;

            virtual void AddVertexBuffer(const Ref<VertexBuffer>& vertex_buffer) = 0;     
            virtual void SetIndexBuffer(const Ref<IndexBuffer>& index_buffer) = 0;     

            virtual const std::vector<Ref<VertexBuffer>>& GetVertexBuffers() const = 0;
            virtual const Ref<IndexBuffer>& GetIndexBuffer() const = 0;

            static Ref<VertexArray> Create();
    };
}

#endif // VERTEX_ARRAY_HPP
