#pragma once #include #include template class BufferObject { private: GLuint m_name; GLvoid* m_mappointer; protected: public: BufferObject(); ~BufferObject(); void bind(); void bind(GLuint index, GLintptr offset = 0, GLsizeiptr size = 0); void fill(GLenum usage, GLsizei size = 0, GLvoid* data = NULL); void subfill(GLintptr offset, GLsizei size, const GLvoid* data); void map(GLenum access); void unmap(); }; typedef BufferObject VBO; typedef BufferObject IBO; class VAO { private: int[3] foo; protected: public: VAO(); ~VAO(); bind(); fill(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride = 0, const GLvoid* pointer = NULL); }