diff -r 73b6c478378e -r 41b38b9e05a2 src/gl/partrenderer.h --- a/src/gl/partrenderer.h Sun Apr 09 01:12:00 2023 +0300 +++ b/src/gl/partrenderer.h Sun Apr 09 12:23:32 2023 +0300 @@ -71,10 +71,35 @@ void updateViewMatrix(); void updateModelMatrix(); Q_SLOT void build(); - void renderVao(const gl::ArrayClass arrayClass); + void renderVao(const gl::ArrayClass arrayClass, const GLenum glType); + template + void renderVao(); void checkForGLErrors(); }; +inline constexpr opt getGlTypeForArrayClass(const gl::ArrayClass vboClass) +{ + switch (vboClass) + { + case gl::ArrayClass::Lines: + case gl::ArrayClass::ConditionalLines: + return GL_LINES; + case gl::ArrayClass::Triangles: + return GL_TRIANGLES; + case gl::ArrayClass::Quads: + return GL_QUADS; + } + return {}; +} + +template +void PartRenderer::renderVao() +{ + constexpr opt glType = getGlTypeForArrayClass(arrayClass); + static_assert(glType.has_value()); + this->renderVao(arrayClass, *glType); +} + inline QVector convertWorldPointsToScreenPoints( const std::vector &worldPoints, const PartRenderer* renderer)