| 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, |