private (PrimitiveTopology, IEnumerable <int>) TransformPrimitive(MeshPrimitive primitive) { switch (primitive.DrawPrimitiveType) { case PrimitiveType.TRIANGLES: return(PrimitiveTopology.TriangleList, primitive.GetTriangleIndices().SelectMany(_ => new[] { _.Item1, _.Item2, _.Item3 })); case PrimitiveType.TRIANGLE_STRIP: return(PrimitiveTopology.TriangleList, primitive.GetTriangleIndices().SelectMany(_ => new[] { _.Item1, _.Item2, _.Item3 })); case PrimitiveType.TRIANGLE_FAN: return(PrimitiveTopology.TriangleList, primitive.GetTriangleIndices().SelectMany(_ => new[] { _.Item1, _.Item2, _.Item3 })); case PrimitiveType.POINTS: return(PrimitiveTopology.PointList, primitive.GetPointIndices()); case PrimitiveType.LINES: return(PrimitiveTopology.LineList, primitive.GetLineIndices().SelectMany(_ => new[] { _.Item1, _.Item2 })); case PrimitiveType.LINE_STRIP: return(PrimitiveTopology.LineList, primitive.GetLineIndices().SelectMany(_ => new[] { _.Item1, _.Item2 })); case PrimitiveType.LINE_LOOP: return(PrimitiveTopology.LineList, primitive.GetLineIndices().SelectMany(_ => new[] { _.Item1, _.Item2 })); default: throw new ArgumentOutOfRangeException(); } }