import ../../GL/opengl
type
VertexArrayObject* = object
vaoID*, bufferID, elementID: GLuint
vertices*: seq[GLfloat]
indices*: seq[GLuint]
proc bindData*(VAO: var VertexArrayObject) =
glGenVertexArrays(1, unsafeAddr VAO.vaoID)
glGenBuffers(1, unsafeAddr VAO.bufferID)
glGenBuffers(1, unsafeAddr VAO.elementID)
glBindVertexArray(VAO.vaoID)
glBindBuffer(GL_ARRAY_BUFFER, VAO.bufferID)
glBufferData(GL_ARRAY_BUFFER, GLfloat.sizeof * VAO.vertices.len, unsafeAddr VAO.vertices, GL_STATIC_DRAW)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, VAO.elementID)
glBufferData(GL_ELEMENT_ARRAY_BUFFER, GLuint.sizeof * VAO.indices.len, unsafeAddr VAO.indices, GL_STATIC_DRAW)
glVertexAttribPointer(0, 3, EGL_FLOAT, false, GLfloat.sizeof * 3, nil)
glEnableVertexAttribArray(0)
proc render*(VAO: var VertexArrayObject) =
glBindVertexArray(VAO.vaoID)
glDrawElements(GL_TRIANGLES, GLsizei VAO.indices.len, GL_UNSIGNED_INT, nil)