#include "client/rendering/Mesh.h" Mesh::Mesh() : vba(0), vbo(0) { glGenVertexArrays(1, &vba); glBindVertexArray(vba); glGenBuffers(1, &vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo); glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(VertexData), static_cast(0)); glEnableVertexAttribArray(0); glVertexAttribPointer(1, 2, GL_FLOAT, false, sizeof(VertexData), static_cast(0) + 3); glEnableVertexAttribArray(1); glVertexAttribPointer(2, 3, GL_FLOAT, false, sizeof(VertexData), static_cast(0) + 5); glEnableVertexAttribArray(2); } Mesh::~Mesh() { glDeleteVertexArrays(1, &vba); glDeleteBuffers(1, &vbo); } void Mesh::add(const VertexData& data) { buffer.push_back(data); } void Mesh::clear() { buffer.clear(); } void Mesh::build() const { glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(VertexData) * buffer.size(), buffer.data(), GL_STATIC_DRAW); } void Mesh::draw() const { glBindVertexArray(vba); glDrawArrays(GL_TRIANGLES, 0, buffer.size()); }