29 lines
825 B
C#
29 lines
825 B
C#
namespace Engine.Asset.Mesh.Loader;
|
|
|
|
public interface IMeshLoader
|
|
{
|
|
public Mesh LoadMesh(string path, MeshLoaderParameters parameters = MeshLoaderParameters.Default);
|
|
|
|
public static Mesh Optimize(Mesh mesh)
|
|
{
|
|
var optimizedMesh = new Mesh();
|
|
var vertexMap = new Dictionary<Mesh.Vertex, uint>();
|
|
uint index = 0;
|
|
|
|
foreach (var vertex in mesh.Vertices)
|
|
{
|
|
if (vertexMap.TryGetValue(vertex, out var existingIndex))
|
|
optimizedMesh.IndicesInternal.Add(existingIndex);
|
|
else
|
|
{
|
|
vertexMap.Add(vertex, index);
|
|
optimizedMesh.VerticesInternal.Add(vertex);
|
|
optimizedMesh.IndicesInternal.Add(index);
|
|
|
|
index++;
|
|
}
|
|
}
|
|
|
|
return optimizedMesh;
|
|
}
|
|
} |