/ src / Ryujinx.Graphics.Shader / InputTopology.cs
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  }