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

#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