src/gl/geometrypreview.h

changeset 102
9f435f66bd0c
--- /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();
+};

mercurial