#pragma once
#include "shader.hpp"
#include "common.hpp"


class Buffer {
    private:
        const GLenum target;
        GLuint buffer;

    public:
        Buffer(GLenum);
        ~Buffer();

        bool bind();
        bool bind(const GLvoid*, GLsizeiptr, GLenum);
};


class ArrayBuffer {
    private:
        const size_t itemlen;
        Buffer vbo;
        GLuint vertexArray;

    public:
        ArrayBuffer(size_t);
        ~ArrayBuffer();

        bool bind();
        bool bind(const GLfloat*, size_t, GLenum);

        bool setAttrib(Program*, const char*, size_t, size_t);
};