1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #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<GLfloat*>(0));
- glEnableVertexAttribArray(0);
- glVertexAttribPointer(1, 2, GL_FLOAT, false, sizeof(VertexData), static_cast<GLfloat*>(0) + 3);
- glEnableVertexAttribArray(1);
-
- glVertexAttribPointer(2, 3, GL_FLOAT, false, sizeof(VertexData), static_cast<GLfloat*>(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());
- }
|