69 void setFragmentStyle(gl::FragmentStyle fragStyle); |
69 void setFragmentStyle(gl::FragmentStyle fragStyle); |
70 void renderScene(); |
70 void renderScene(); |
71 void updateViewMatrix(); |
71 void updateViewMatrix(); |
72 void updateModelMatrix(); |
72 void updateModelMatrix(); |
73 Q_SLOT void build(); |
73 Q_SLOT void build(); |
74 void renderVao(const gl::ArrayClass arrayClass); |
74 void renderVao(const gl::ArrayClass arrayClass, const GLenum glType); |
|
75 template<gl::ArrayClass arrayClass> |
|
76 void renderVao(); |
75 void checkForGLErrors(); |
77 void checkForGLErrors(); |
76 }; |
78 }; |
|
79 |
|
80 inline constexpr opt<GLenum> getGlTypeForArrayClass(const gl::ArrayClass vboClass) |
|
81 { |
|
82 switch (vboClass) |
|
83 { |
|
84 case gl::ArrayClass::Lines: |
|
85 case gl::ArrayClass::ConditionalLines: |
|
86 return GL_LINES; |
|
87 case gl::ArrayClass::Triangles: |
|
88 return GL_TRIANGLES; |
|
89 case gl::ArrayClass::Quads: |
|
90 return GL_QUADS; |
|
91 } |
|
92 return {}; |
|
93 } |
|
94 |
|
95 template<gl::ArrayClass arrayClass> |
|
96 void PartRenderer::renderVao() |
|
97 { |
|
98 constexpr opt<GLenum> glType = getGlTypeForArrayClass(arrayClass); |
|
99 static_assert(glType.has_value()); |
|
100 this->renderVao(arrayClass, *glType); |
|
101 } |
77 |
102 |
78 inline QVector<QPointF> convertWorldPointsToScreenPoints( |
103 inline QVector<QPointF> convertWorldPointsToScreenPoints( |
79 const std::vector<glm::vec3> &worldPoints, |
104 const std::vector<glm::vec3> &worldPoints, |
80 const PartRenderer* renderer) |
105 const PartRenderer* renderer) |
81 { |
106 { |