#include "gl/DrawBuffer.hpp" #include #include #include DrawBuffer::DrawBuffer() : vao(0) { } DrawBuffer::~DrawBuffer() { if (vao) { glDeleteVertexArrays(1, &vao); } } void DrawBuffer::addGeometry(GeometryBuffer* gbuff) { if (vao == 0) { glGenVertexArrays(1, &vao); } glBindVertexArray(vao); glBindBuffer(GL_ARRAY_BUFFER, gbuff->getVBOName()); // Iterate the attributes present in the gbuff for (const AttributeIndex& at : gbuff->getDataAttributes()) { auto vaoindex = static_cast(at.sem); glEnableVertexAttribArray(vaoindex); glVertexAttribPointer(vaoindex, static_cast(at.size), at.type, GL_TRUE, at.stride, reinterpret_cast(at.offset)); } }