]> git.sur5r.net Git - fstl/blob - src/glmesh.cpp
New upstream version 0.9.4
[fstl] / src / glmesh.cpp
1 #include "glmesh.h"
2 #include "mesh.h"
3
4 GLMesh::GLMesh(const Mesh* const mesh)
5     : vertices(QOpenGLBuffer::VertexBuffer), indices(QOpenGLBuffer::IndexBuffer)
6 {
7     initializeOpenGLFunctions();
8
9     vertices.create();
10     indices.create();
11
12     vertices.setUsagePattern(QOpenGLBuffer::StaticDraw);
13     indices.setUsagePattern(QOpenGLBuffer::StaticDraw);
14
15     vertices.bind();
16     vertices.allocate(mesh->vertices.data(),
17                       mesh->vertices.size() * sizeof(float));
18     vertices.release();
19
20     indices.bind();
21     indices.allocate(mesh->indices.data(),
22                      mesh->indices.size() * sizeof(uint32_t));
23     indices.release();
24 }
25
26 void GLMesh::draw(GLuint vp)
27 {
28     vertices.bind();
29     indices.bind();
30
31     glVertexAttribPointer(vp, 3, GL_FLOAT, false, 3*sizeof(float), NULL);
32     glDrawElements(GL_TRIANGLES, indices.size() / sizeof(uint32_t),
33                    GL_UNSIGNED_INT, NULL);
34
35     vertices.release();
36     indices.release();
37 }