--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/gl/geometrypreview.h Wed Feb 17 16:49:35 2021 +0200 @@ -0,0 +1,30 @@ +#pragma once +#include "abstractshaderprogram.h" + +class GeometryPreview : public AbstractShaderProgram +{ +public: + struct Vertex + { + glm::vec3 point; + glm::vec4 color; + }; + GeometryPreview(QObject* parent = nullptr); + ~GeometryPreview(); + QVector<Vertex>& modifyLinesBuffer(); + QVector<Vertex>& modifyTrianglesBuffer(); +private: + QVector<Vertex> lines; + QVector<Vertex> triangles; + QOpenGLBuffer linesBuffer; + QOpenGLBuffer trianglesBuffer; + QOpenGLShader vertexShader; + QOpenGLShader fragmentShader; + std::optional<gl::ShaderProgram> program{std::nullopt}; + QOpenGLVertexArrayObject vertexArrayObject; + bool isInitialized = false; + bool needRebuild = false; + void initialize(); + void rebuildIfNecessary(); + void checkForGLErrors(); +};