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