refactor drawing code

This commit is contained in:
2021-01-03 12:30:16 +01:00
parent 8ad1cf1b89
commit 928d45c3fb
9 changed files with 101 additions and 39 deletions

View File

@ -4,8 +4,9 @@
#include <QOpenGLFunctions>
OpenGLMesh::OpenGLMesh(QVector<float> verts, QOpenGLTexture *tex)
:tex(tex) {
OpenGLMesh::OpenGLMesh(QVector<float> verts, QOpenGLTexture *tex, QOpenGLShaderProgram *program)
:tex(tex),
program(program) {
OpenGLWidget::instance->makeCurrent();
QOpenGLExtraFunctions *glf = OpenGLWidget::instance;
nverts = verts.size() / 8;
@ -24,3 +25,13 @@ OpenGLMesh::OpenGLMesh(QVector<float> verts, QOpenGLTexture *tex)
glf->glBindVertexArray(0);
OpenGLWidget::instance->doneCurrent();
}
void OpenGLMesh::draw(QOpenGLExtraFunctions *f, const QMatrix4x4 &mat) const {
program->bind();
program->setUniformValue("model", mat);
f->glBindVertexArray(vao);
tex->bind();
f->glDrawArrays(GL_TRIANGLES, 0, nverts);
tex->release();
}