36 lines
1,013 B
C++
36 lines
1,013 B
C++
#include <GL/glew.h>
|
|
#include <GL/gl.h>
|
|
|
|
#include "mesh.h"
|
|
|
|
Mesh::Mesh(int vertexCount, float *vertices) {
|
|
// Generate buffers
|
|
glGenBuffers(1, &VBO);
|
|
glGenVertexArrays(1, &VAO);
|
|
|
|
// Bind vertex data to VBO
|
|
glBindBuffer(GL_ARRAY_BUFFER, VBO);
|
|
glBufferData(GL_ARRAY_BUFFER, vertexCount * (3 + 3 + 2) * sizeof(float), vertices, GL_STATIC_DRAW);
|
|
|
|
// Bind vertex attributes to VAO
|
|
glBindVertexArray(VAO);
|
|
|
|
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(0 * sizeof(float)));
|
|
glEnableVertexAttribArray(0);
|
|
|
|
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));
|
|
glEnableVertexAttribArray(1);
|
|
|
|
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));
|
|
glEnableVertexAttribArray(2);
|
|
}
|
|
|
|
Mesh::~Mesh() {
|
|
glDeleteBuffers(1, &VBO);
|
|
glDeleteVertexArrays(1, &VAO);
|
|
}
|
|
|
|
void Mesh::bind() {
|
|
glBindBuffer(GL_ARRAY_BUFFER, VBO);
|
|
glBindVertexArray(VAO);
|
|
} |