Tue, 14 Jun 2022 23:04:49 +0300
Edit tools: get rid of the preview polygon and render the result-to-be
70 | 1 | #pragma once |
2 | #include "common.h" | |
3 | ||
215
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
4 | struct GLAttributeSpec |
70 | 5 | { |
215
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
6 | GLenum type; |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
7 | int offset; |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
8 | int tuplesize; |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
9 | int stride; |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
10 | }; |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
11 | |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
12 | //! @brief A collection of a single VAO with a single VBO, |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
13 | //! a vertex shader and a fragment shader. |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
14 | class BasicShader final : protected QOpenGLFunctions |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
15 | { |
70 | 16 | bool isInitialized = false; |
17 | QOpenGLBuffer buffer; | |
18 | QOpenGLShader vertexShader; | |
19 | QOpenGLShader fragmentShader; | |
215
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
20 | std::unique_ptr<gl::ShaderProgram> program = nullptr; |
70 | 21 | QOpenGLVertexArrayObject vertexArrayObject; |
215
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
22 | std::size_t vertexCount = 0; |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
23 | public: |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
24 | BasicShader(); |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
25 | ~BasicShader(); |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
26 | Q_DISABLE_COPY(BasicShader) |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
27 | void initialize( |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
28 | const char* vertexShaderSource, |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
29 | const char* fragmentShaderSource, |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
30 | QOpenGLBuffer::UsagePattern usagePattern, |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
31 | const std::vector<GLAttributeSpec>& attributeSpecs); |
216
c7241f504117
Reworked grid program into a render layer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
215
diff
changeset
|
32 | void setUniformMatrix(const char* name, const glm::mat4& value); |
c7241f504117
Reworked grid program into a render layer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
215
diff
changeset
|
33 | void setUniformVector(const char* name, const glm::vec4& value); |
215
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
34 | void setMvpMatrix(const glm::mat4& newMvpMatrix); |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
35 | void bufferData(const void* data, std::size_t count, std::size_t size); |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
36 | void draw(GLenum drawMode); |
34c6e7bc4ee1
Reimplement the axes program as a layer that can be added to PartRenderer
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
118
diff
changeset
|
37 | void teardown(); |
70 | 38 | }; |