Skip to content

File VertexArray.h

File List > render > VertexArray.h

Go to the documentation of this file

#pragma once

#include "buffers/VertexBuffer.h"
#include "buffers/BufferLayout.h"

class VertexArray
{
private:
    GLuint vao_id;
    GLuint vao_stride{};
    void _delVAO();
    void _resetVAOID(GLuint _ID) { if (vao_id > 0 && vao_id != _ID)_delVAO(); vao_id = _ID; }
public:

    VertexArray();
    ~VertexArray();

    VertexArray(const VertexArray& vao);
    VertexArray(VertexArray&& vao) noexcept;

    VertexArray& operator=(const VertexArray& vao);
    VertexArray& operator=(VertexArray&& vao) noexcept;

    void AddBuffer(VertexBuffer& vb, BufferLayout bl); //add one buffer with its layout pattern

public:

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

    unsigned int GetVertArrayID() const { return vao_id; }
    GLuint GetStride() const { return vao_stride / sizeof(GLfloat); };
};