diff -r eee644f88e93 -r 3af627f7a40f src/gl/gridprogram.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gl/gridprogram.h Thu Feb 13 12:51:27 2020 +0200
@@ -0,0 +1,45 @@
+/*
+ * LDForge: LDraw parts authoring CAD
+ * Copyright (C) 2020 Teemu Piippo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+#include "common.h"
+
+class GridProgram : public QObject, protected QOpenGLFunctions
+{
+ 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);
+ void operator=(GridProgram) = delete;
+ void draw();
+ void teardown();
+private:
+ void checkForGLErrors();
+ bool isInitialized = false;
+ QOpenGLBuffer buffer;
+ QOpenGLShader vertexShader;
+ QOpenGLShader fragmentShader;
+ std::optional program{std::nullopt};
+ QOpenGLVertexArrayObject vertexArrayObject;
+};