//
// Created by sfd on 25-4-21.
//

#ifndef VERTEXARRAY_H
#define VERTEXARRAY_H

#include <memory>

#include "Buffer.h"



namespace Hazel
{
    class HAZEL_API VertexArray
    {
    public:
        virtual ~VertexArray();

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

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

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

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


#endif //VERTEXARRAY_H
