Adding backdrop

This commit is contained in:
Matt Keeter 2014-03-03 21:33:54 -05:00
parent 97cf902b87
commit f94a8de6c4
6 changed files with 71 additions and 2 deletions

42
src/backdrop.cpp Normal file
View file

@ -0,0 +1,42 @@
#include "backdrop.h"
Backdrop::Backdrop()
{
shader.addShaderFromSourceFile(QGLShader::Vertex, ":/gl/quad.vert");
shader.addShaderFromSourceFile(QGLShader::Fragment, ":/gl/quad.frag");
shader.link();
float vbuf[] = {
-1, -1, 0.00, 0.10, 0.15,
-1, 1, 0.03, 0.21, 0.26,
1, -1, 0.00, 0.12, 0.18,
1, 1, 0.06, 0.26, 0.30};
vertices.create();
vertices.bind();
vertices.allocate(vbuf, sizeof(vbuf));
vertices.release();
}
void Backdrop::draw()
{
shader.bind();
vertices.bind();
const GLuint vp = shader.attributeLocation("vertex_position");
const GLuint vc = shader.attributeLocation("vertex_color");
glEnableVertexAttribArray(vp);
glEnableVertexAttribArray(vc);
glVertexAttribPointer(vp, 2, GL_FLOAT, false,
5 * sizeof(GLfloat), 0);
glVertexAttribPointer(vc, 3, GL_FLOAT, false,
5 * sizeof(GLfloat),
(GLvoid*)(2 * sizeof(GLfloat)));
glDrawArrays(GL_TRIANGLE_STRIP, 0, 8);
vertices.release();
shader.release();
}

17
src/backdrop.h Normal file
View file

@ -0,0 +1,17 @@
#ifndef BACKDROP_H
#define BACKDROP_H
#include <QtOpenGL/QGLShaderProgram>
#include <QtOpenGL/QGLBuffer>
class Backdrop
{
public:
Backdrop();
void draw();
private:
QGLShaderProgram shader;
QGLBuffer vertices;
};
#endif // BACKDROP_H

View file

@ -2,6 +2,7 @@
#include <QDebug>
#include "canvas.h"
#include "backdrop.h"
#include "glmesh.h"
#include "mesh.h"
@ -39,6 +40,8 @@ void Canvas::initializeGL()
mesh_shader.addShaderFromSourceFile(QGLShader::Fragment, ":/gl/mesh.frag");
mesh_shader.link();
backdrop = new Backdrop();
glClearColor(0.0, 0.0, 0.0, 0.0);
glEnable(GL_DEPTH_TEST);
}
@ -47,6 +50,7 @@ void Canvas::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
backdrop->draw();
if (mesh) draw_mesh();
}

View file

@ -8,6 +8,7 @@
class GLMesh;
class Mesh;
class Backdrop;
class Canvas : public QGLWidget
{
@ -40,6 +41,7 @@ private:
QGLShaderProgram quad_shader;
GLMesh* mesh;
Backdrop* backdrop;
QVector3D center;
float scale;

View file

@ -9,14 +9,16 @@ SOURCES += \
mesh.cpp \
glmesh.cpp \
loader.cpp \
window.cpp
window.cpp \
backdrop.cpp
HEADERS += \
canvas.h \
mesh.h \
glmesh.h \
loader.h \
window.h
window.h \
backdrop.h
CONFIG += c++11

View file

@ -13,6 +13,8 @@ Window::Window(QWidget *parent) :
canvas = new Canvas(format, this);
setCentralWidget(canvas);
resize(600, 400);
}
void Window::load_stl(const QString &filename)