src/gl/geometrypreview.h

Wed, 17 Feb 2021 16:49:35 +0200

author
Teemu Piippo <teemu@hecknology.net>
date
Wed, 17 Feb 2021 16:49:35 +0200
changeset 102
9f435f66bd0c
permissions
-rw-r--r--

stuff

102
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
1 #pragma once
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
2 #include "abstractshaderprogram.h"
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
3
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
4 class GeometryPreview : public AbstractShaderProgram
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
5 {
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
6 public:
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
7 struct Vertex
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
8 {
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
9 glm::vec3 point;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
10 glm::vec4 color;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
11 };
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
12 GeometryPreview(QObject* parent = nullptr);
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
13 ~GeometryPreview();
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
14 QVector<Vertex>& modifyLinesBuffer();
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
15 QVector<Vertex>& modifyTrianglesBuffer();
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
16 private:
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
17 QVector<Vertex> lines;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
18 QVector<Vertex> triangles;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
19 QOpenGLBuffer linesBuffer;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
20 QOpenGLBuffer trianglesBuffer;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
21 QOpenGLShader vertexShader;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
22 QOpenGLShader fragmentShader;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
23 std::optional<gl::ShaderProgram> program{std::nullopt};
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
24 QOpenGLVertexArrayObject vertexArrayObject;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
25 bool isInitialized = false;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
26 bool needRebuild = false;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
27 void initialize();
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
28 void rebuildIfNecessary();
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
29 void checkForGLErrors();
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
30 };

mercurial