src/gl/gridprogram.h

changeset 70
f21b800b02a4
parent 64
f99d52b1646b
child 102
9f435f66bd0c
child 118
8e1c9f18ae15
--- a/src/gl/gridprogram.h	Fri Mar 06 16:08:53 2020 +0200
+++ b/src/gl/gridprogram.h	Fri Mar 06 20:13:10 2020 +0200
@@ -17,33 +17,24 @@
  */
 
 #pragma once
+#include "basicshaderprogram.h"
 #include "common.h"
 
-class GridProgram : public QObject, protected QOpenGLFunctions
+class GridProgram : public AbstractBasicShaderProgram
 {
 	Q_OBJECT
 public:
-	GridProgram(QObject* parent = nullptr);
-	GridProgram(const GridProgram&) = delete;
-	GridProgram(GridProgram&&) = delete;
-	~GridProgram() = default;
-	void initialize();
-	void setViewMatrix(const glm::mat4& newViewMatrix);
-	void setProjectionMatrix(const glm::mat4& newProjectionMatrix);
-	void setModelMatrix(const glm::mat4& newModelMatrix);
+	using AbstractBasicShaderProgram::AbstractBasicShaderProgram;
 	void setGridMatrix(const glm::mat4& newGridMatrix);
 	void setGridColor(const QColor& newGridColor);
-	void operator=(GridProgram) = delete;
-	void draw();
-	void teardown();
+protected:
+	const char* vertexShaderSource() const override;
+	const char* fragmentShaderSource() const override;
+	const void* vertexData() const override;
+	int vertexSize() const override;
+	int vertexCount() const override;
+	void setupVertexArrays() override;
+	GLenum drawMode() const override;
 private:
-	void setMatrix(const char* name, const glm::mat4& matrix);
-	void checkForGLErrors();
-	bool isInitialized = false;
-	QOpenGLBuffer buffer;
-	QOpenGLShader vertexShader;
-	QOpenGLShader fragmentShader;
-	std::optional<gl::ShaderProgram> program{std::nullopt};
 	glm::vec4 gridColor = {1.0f, 1.0f, 1.0f, 0.75f};
-	QOpenGLVertexArrayObject vertexArrayObject;
 };

mercurial