35 lines
918 B
C++
35 lines
918 B
C++
#include "glmesh.h"
|
|
#include "mesh.h"
|
|
|
|
GLMesh::GLMesh(const Mesh* const mesh)
|
|
: vertices(QGLBuffer::VertexBuffer), indices(QGLBuffer::IndexBuffer)
|
|
{
|
|
vertices.create();
|
|
indices.create();
|
|
|
|
vertices.setUsagePattern(QGLBuffer::StaticDraw);
|
|
indices.setUsagePattern(QGLBuffer::StaticDraw);
|
|
|
|
vertices.bind();
|
|
vertices.allocate(mesh->vertices.data(),
|
|
mesh->vertices.size() * sizeof(float));
|
|
vertices.release();
|
|
|
|
indices.bind();
|
|
indices.allocate(mesh->indices.data(),
|
|
mesh->indices.size() * sizeof(uint32_t));
|
|
indices.release();
|
|
}
|
|
|
|
void GLMesh::draw(GLuint vp)
|
|
{
|
|
vertices.bind();
|
|
indices.bind();
|
|
|
|
glVertexAttribPointer(vp, 3, GL_FLOAT, false, 3*sizeof(float), NULL);
|
|
glDrawElements(GL_TRIANGLES, indices.size() / sizeof(uint32_t),
|
|
GL_UNSIGNED_INT, NULL);
|
|
|
|
vertices.release();
|
|
indices.release();
|
|
}
|