private static BeginMode GetBeginMode(ExplicitModelPrimitiveTopology primitiveTopology) { switch (primitiveTopology) { case ExplicitModelPrimitiveTopology.PointList: return(BeginMode.Points); case ExplicitModelPrimitiveTopology.LineList: return(BeginMode.Lines); case ExplicitModelPrimitiveTopology.LineStrip: return(BeginMode.LineStrip); case ExplicitModelPrimitiveTopology.TriangleList: return(BeginMode.Triangles); case ExplicitModelPrimitiveTopology.TriangleStrip: return(BeginMode.TriangleStrip); default: throw new ArgumentOutOfRangeException(nameof(primitiveTopology), primitiveTopology, null); } }
public static IExplicitModel FromVertices(IReadOnlyList <VertexPosTanNormTex> vertices, IReadOnlyList <int> indices, ExplicitModelPrimitiveTopology topology) { var positions = vertices.Select(x => x.Position).ToArray(); var model = new ExplicitModel(ResourceVolatility.Immutable) { Positions = positions, Tangents = vertices.Select(x => x.Tangent).ToArray(), Normals = vertices.Select(x => x.Normal).ToArray(), TexCoords = vertices.Select(x => x.TexCoord).ToArray(), Indices = indices?.ToArray() ?? Enumerable.Range(0, positions.Length).ToArray(), IndexSubranges = new [] { new ExplicitModelIndexSubrange(0, indices?.Count ?? vertices.Count) }, Topology = topology, }; model.RecalculateInfo(); model.Validate(); return(model); }