|
1 #ifndef VERTEXPROGRAM_H |
|
2 #define VERTEXPROGRAM_H |
|
3 #include "basicshaderprogram.h" |
|
4 class Document; |
|
5 |
|
6 class VertexProgram : public AbstractBasicShaderProgram |
|
7 { |
|
8 public: |
|
9 struct Vertex |
|
10 { |
|
11 glm::vec3 position; |
|
12 glm::vec3 color; |
|
13 }; |
|
14 VertexProgram(QObject* parent = nullptr); |
|
15 void build(const Document* document); |
|
16 protected: |
|
17 const char* vertexShaderSource() const override; |
|
18 const char* fragmentShaderSource() const override; |
|
19 const void* vertexData() const override; |
|
20 int vertexSize() const override; |
|
21 int vertexCount() const override; |
|
22 void setupVertexArrays() override; |
|
23 GLenum drawMode() const override; |
|
24 QOpenGLBuffer::UsagePattern usagePattern() const override; |
|
25 private: |
|
26 std::vector<Vertex> data; |
|
27 }; |
|
28 |
|
29 #endif // VERTEXPROGRAM_H |