209:c93e4a1eaadb | 210:232e7634cc8a |
---|---|
30 class Model; | 30 class Model; |
31 class DocumentManager; | 31 class DocumentManager; |
32 | 32 |
33 namespace gl | 33 namespace gl |
34 { | 34 { |
35 // VAO names | |
36 enum class ArrayClass : std::uint8_t | |
37 { | |
38 Lines, | |
39 Triangles, | |
40 Quads, | |
41 ConditionalLines | |
42 }; | |
43 | |
44 constexpr ArrayClass ARRAY_CLASSES[] = { | |
45 ArrayClass::Lines, | |
46 ArrayClass::Triangles, | |
47 ArrayClass::Quads, | |
48 ArrayClass::ConditionalLines, | |
49 }; | |
50 constexpr int NUM_ARRAY_CLASSES = countof(ARRAY_CLASSES); | |
51 | |
35 struct ModelShaders | 52 struct ModelShaders |
36 { | 53 { |
37 struct Vertex | 54 struct Vertex |
38 { | 55 { |
39 glm::vec3 position; | 56 glm::vec3 position; |
49 QOpenGLShaderProgram* pickSceneProgram = nullptr; | 66 QOpenGLShaderProgram* pickSceneProgram = nullptr; |
50 QOpenGLBuffer buffer{QOpenGLBuffer::VertexBuffer}; | 67 QOpenGLBuffer buffer{QOpenGLBuffer::VertexBuffer}; |
51 QOpenGLVertexArrayObject vertexArray; | 68 QOpenGLVertexArrayObject vertexArray; |
52 std::vector<Vertex> cachedData; | 69 std::vector<Vertex> cachedData; |
53 std::size_t vertexCount; | 70 std::size_t vertexCount; |
54 } shaderObjects[gl::NUM_POLYGON_TYPES]; | 71 } shaderObjects[gl::NUM_ARRAY_CLASSES]; |
55 }; | 72 }; |
56 | 73 |
57 void build( | 74 void build( |
58 ModelShaders* shaders, | 75 ModelShaders* shaders, |
59 Model *model, | 76 Model *model, |