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; +};