|
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 }; |