src/gl/partrenderer.h

changeset 360
41b38b9e05a2
parent 359
73b6c478378e
child 372
b2914aaeec1a
equal deleted inserted replaced
359:73b6c478378e 360:41b38b9e05a2
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 {

mercurial