#include "wrapper/VertexBuffer.h" VertexBuffer::VertexBuffer() : vertexArray(0), vertexBuffer(0) { glGenVertexArrays(1, &vertexArray); glGenBuffers(1, &vertexBuffer); } VertexBuffer::~VertexBuffer() { glDeleteBuffers(1, &vertexBuffer); glDeleteVertexArrays(1, &vertexArray); } void VertexBuffer::bindArray() const { glBindVertexArray(vertexArray); } void VertexBuffer::bindBuffer() const { glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); } void VertexBuffer::setAttributes(const Attributes& attributes) { bindArray(); bindBuffer(); attributes.set(); } void VertexBuffer::setData(int size, const void* data, int flag) { bindBuffer(); glBufferData(GL_ARRAY_BUFFER, size, data, flag); } void VertexBuffer::setStaticData(int size, const void* data) { setData(size, data, GL_STATIC_DRAW); } void VertexBuffer::setStreamData(int size, const void* data) { setData(size, data, GL_STREAM_DRAW); } void VertexBuffer::setDynamicData(int size, const void* data) { setData(size, data, GL_DYNAMIC_DRAW); } void VertexBuffer::updateData(int offset, int size, const void* data) { bindBuffer(); glBufferSubData(GL_ARRAY_BUFFER, offset, size, data); } void VertexBuffer::draw(int vertices, int mode, int offset) { bindArray(); glDrawArrays(mode, offset, vertices); } void VertexBuffer::draw(int vertices, int offset) { draw(vertices, GL_TRIANGLES, offset); } void VertexBuffer::drawStrip(int vertices, int offset) { draw(vertices, GL_TRIANGLE_STRIP, offset); }