src/gl/gridprogram.h

changeset 70
f21b800b02a4
parent 64
f99d52b1646b
child 102
9f435f66bd0c
child 118
8e1c9f18ae15
equal deleted inserted replaced
69:a36913fc552a 70:f21b800b02a4
15 * You should have received a copy of the GNU General Public License 15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */ 17 */
18 18
19 #pragma once 19 #pragma once
20 #include "basicshaderprogram.h"
20 #include "common.h" 21 #include "common.h"
21 22
22 class GridProgram : public QObject, protected QOpenGLFunctions 23 class GridProgram : public AbstractBasicShaderProgram
23 { 24 {
24 Q_OBJECT 25 Q_OBJECT
25 public: 26 public:
26 GridProgram(QObject* parent = nullptr); 27 using AbstractBasicShaderProgram::AbstractBasicShaderProgram;
27 GridProgram(const GridProgram&) = delete;
28 GridProgram(GridProgram&&) = delete;
29 ~GridProgram() = default;
30 void initialize();
31 void setViewMatrix(const glm::mat4& newViewMatrix);
32 void setProjectionMatrix(const glm::mat4& newProjectionMatrix);
33 void setModelMatrix(const glm::mat4& newModelMatrix);
34 void setGridMatrix(const glm::mat4& newGridMatrix); 28 void setGridMatrix(const glm::mat4& newGridMatrix);
35 void setGridColor(const QColor& newGridColor); 29 void setGridColor(const QColor& newGridColor);
36 void operator=(GridProgram) = delete; 30 protected:
37 void draw(); 31 const char* vertexShaderSource() const override;
38 void teardown(); 32 const char* fragmentShaderSource() const override;
33 const void* vertexData() const override;
34 int vertexSize() const override;
35 int vertexCount() const override;
36 void setupVertexArrays() override;
37 GLenum drawMode() const override;
39 private: 38 private:
40 void setMatrix(const char* name, const glm::mat4& matrix);
41 void checkForGLErrors();
42 bool isInitialized = false;
43 QOpenGLBuffer buffer;
44 QOpenGLShader vertexShader;
45 QOpenGLShader fragmentShader;
46 std::optional<gl::ShaderProgram> program{std::nullopt};
47 glm::vec4 gridColor = {1.0f, 1.0f, 1.0f, 0.75f}; 39 glm::vec4 gridColor = {1.0f, 1.0f, 1.0f, 0.75f};
48 QOpenGLVertexArrayObject vertexArrayObject;
49 }; 40 };

mercurial