InputTopology.cs
1 namespace Ryujinx.Graphics.Shader 2 { 3 public enum InputTopology : byte 4 { 5 Points, 6 Lines, 7 LinesAdjacency, 8 Triangles, 9 TrianglesAdjacency, 10 } 11 12 static class InputTopologyExtensions 13 { 14 public static string ToGlslString(this InputTopology topology) 15 { 16 return topology switch 17 { 18 InputTopology.Points => "points", 19 InputTopology.Lines => "lines", 20 InputTopology.LinesAdjacency => "lines_adjacency", 21 InputTopology.Triangles => "triangles", 22 InputTopology.TrianglesAdjacency => "triangles_adjacency", 23 _ => "points", 24 }; 25 } 26 27 public static int ToInputVertices(this InputTopology topology) 28 { 29 return topology switch 30 { 31 InputTopology.Points => 1, 32 InputTopology.Lines => 2, 33 InputTopology.LinesAdjacency => 4, 34 InputTopology.Triangles => 3, 35 InputTopology.TrianglesAdjacency => 6, 36 _ => 1, 37 }; 38 } 39 40 public static int ToInputVerticesNoAdjacency(this InputTopology topology) 41 { 42 return topology switch 43 { 44 InputTopology.Points => 1, 45 InputTopology.Lines or 46 InputTopology.LinesAdjacency => 2, 47 InputTopology.Triangles or 48 InputTopology.TrianglesAdjacency => 3, 49 _ => 1, 50 }; 51 } 52 } 53 }