diff -r a36913fc552a -r f21b800b02a4 src/gl/gridprogram.h --- 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 program{std::nullopt}; glm::vec4 gridColor = {1.0f, 1.0f, 1.0f, 0.75f}; - QOpenGLVertexArrayObject vertexArrayObject; };