Adding backdrop
This commit is contained in:
parent
97cf902b87
commit
f94a8de6c4
6 changed files with 71 additions and 2 deletions
42
src/backdrop.cpp
Normal file
42
src/backdrop.cpp
Normal 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
17
src/backdrop.h
Normal 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
|
|
@ -2,6 +2,7 @@
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include "canvas.h"
|
#include "canvas.h"
|
||||||
|
#include "backdrop.h"
|
||||||
#include "glmesh.h"
|
#include "glmesh.h"
|
||||||
#include "mesh.h"
|
#include "mesh.h"
|
||||||
|
|
||||||
|
@ -39,6 +40,8 @@ void Canvas::initializeGL()
|
||||||
mesh_shader.addShaderFromSourceFile(QGLShader::Fragment, ":/gl/mesh.frag");
|
mesh_shader.addShaderFromSourceFile(QGLShader::Fragment, ":/gl/mesh.frag");
|
||||||
mesh_shader.link();
|
mesh_shader.link();
|
||||||
|
|
||||||
|
backdrop = new Backdrop();
|
||||||
|
|
||||||
glClearColor(0.0, 0.0, 0.0, 0.0);
|
glClearColor(0.0, 0.0, 0.0, 0.0);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
}
|
}
|
||||||
|
@ -47,6 +50,7 @@ void Canvas::paintGL()
|
||||||
{
|
{
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
backdrop->draw();
|
||||||
if (mesh) draw_mesh();
|
if (mesh) draw_mesh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
class GLMesh;
|
class GLMesh;
|
||||||
class Mesh;
|
class Mesh;
|
||||||
|
class Backdrop;
|
||||||
|
|
||||||
class Canvas : public QGLWidget
|
class Canvas : public QGLWidget
|
||||||
{
|
{
|
||||||
|
@ -40,6 +41,7 @@ private:
|
||||||
QGLShaderProgram quad_shader;
|
QGLShaderProgram quad_shader;
|
||||||
|
|
||||||
GLMesh* mesh;
|
GLMesh* mesh;
|
||||||
|
Backdrop* backdrop;
|
||||||
|
|
||||||
QVector3D center;
|
QVector3D center;
|
||||||
float scale;
|
float scale;
|
||||||
|
|
|
@ -9,14 +9,16 @@ SOURCES += \
|
||||||
mesh.cpp \
|
mesh.cpp \
|
||||||
glmesh.cpp \
|
glmesh.cpp \
|
||||||
loader.cpp \
|
loader.cpp \
|
||||||
window.cpp
|
window.cpp \
|
||||||
|
backdrop.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
canvas.h \
|
canvas.h \
|
||||||
mesh.h \
|
mesh.h \
|
||||||
glmesh.h \
|
glmesh.h \
|
||||||
loader.h \
|
loader.h \
|
||||||
window.h
|
window.h \
|
||||||
|
backdrop.h
|
||||||
|
|
||||||
CONFIG += c++11
|
CONFIG += c++11
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ Window::Window(QWidget *parent) :
|
||||||
|
|
||||||
canvas = new Canvas(format, this);
|
canvas = new Canvas(format, this);
|
||||||
setCentralWidget(canvas);
|
setCentralWidget(canvas);
|
||||||
|
|
||||||
|
resize(600, 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::load_stl(const QString &filename)
|
void Window::load_stl(const QString &filename)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue