diff --git a/src/Magnum/Primitives/Implementation/WireframeSpheroid.cpp b/src/Magnum/Primitives/Implementation/WireframeSpheroid.cpp index 8cb4d39f0..8c1562669 100644 --- a/src/Magnum/Primitives/Implementation/WireframeSpheroid.cpp +++ b/src/Magnum/Primitives/Implementation/WireframeSpheroid.cpp @@ -61,9 +61,10 @@ void WireframeSpheroid::bottomHemisphere(const Float endY, const UnsignedInt rin } void WireframeSpheroid::topHemisphere(const Float startY, const UnsignedInt rings) { - /* Connect previous ring to following vertices */ - for(UnsignedInt i = 0; i != 4; ++i) + /* Connect previous ring to following vertices (if any) */ + if(rings > 1) for(UnsignedInt i = 0; i != 4; ++i) { _indices.insert(_indices.end(), {UnsignedInt(_positions.size())-4*_segments+i, UnsignedInt(_positions.size())+i}); + } /* Hemisphere vertices and indices */ const Rad ringAngleIncrement(Constants::piHalf()/rings); @@ -84,8 +85,10 @@ void WireframeSpheroid::topHemisphere(const Float startY, const UnsignedInt ring _positions.push_back(Vector3::yAxis(startY + 1.0f)); /* Connect last ring to final vertex */ - for(UnsignedInt i = 0; i != 4; ++i) - _indices.insert(_indices.end(), {UnsignedInt(_positions.size())-5+i, UnsignedInt(_positions.size())-1}); + if(rings > 1) for(UnsignedInt i = 0; i != 4; ++i) + _indices.insert(_indices.end(), {UnsignedInt(_positions.size()) -5 + i, UnsignedInt(_positions.size()) - 1}); + else for(UnsignedInt i = 0; i != 4; ++i) + _indices.insert(_indices.end(), {UnsignedInt(_positions.size()) - 4*_segments + i- 1 , UnsignedInt(_positions.size()) - 1}); } void WireframeSpheroid::ring(const Float y) {