#pragma once #include "object.h" #include "bindable.h" #include "buffer.h" namespace gl { class vao : public bindable { struct attrib_params { // TBD: should be shared_ptr? (when buffer is destroyed by owner VAO could still potentially exist) gl::buffer &buffer; int attrib; int size; int type; int stride; int offset; }; buffer *ebo = nullptr; std::vector params; public: //vao(); //~vao(); void setup_attrib(buffer &buffer, int attrib, int size, int type, int stride, int offset); void setup_ebo(buffer &ebo); //using bindable::bind; void bind(); static void unbind(); //static void bind(GLuint i); }; }