Program Listing for File OpenGLVertexArray.cpp

Return to documentation for file (src/Graphics/RHI/OpenGL/Buffers/OpenGLVertexArray.cpp)

#pragma once

#include "Ramus/Graphics/RHI/OpenGL/OpenGLResource.hpp"
#include "Ramus/Graphics/RHI/OpenGL/Buffers/OpenGLVertexBuffer.hpp"
#include "Ramus/Graphics/RHI/OpenGL/Buffers/OpenGLIndexBuffer.hpp"

#include <memory>
#include <vector>

namespace ramus
{

    class VertexArray : public OpenGLResource<VertexArray>
    {
    public:
        VertexArray();
        ~VertexArray();

        VertexArray(const VertexArray&) = delete;
        VertexArray& operator=(const VertexArray&) = delete;

        void AddVertexBuffer(const std::shared_ptr<OpenGLVertexBuffer>& vbo);
        void SetIndexBuffer(const std::shared_ptr<OpenGLIndexBuffer>& ibo);

        void Bind() const;
        void Unbind() const;

    private:
        uint32_t m_vboIdx = 0;

        std::vector<std::shared_ptr<OpenGLVertexBuffer>> m_vbos;
        std::shared_ptr<OpenGLIndexBuffer> m_ibo;
    };

}