public Model Load(string file, Device device) { XmlDocument document = new XmlDocument(); document.Load(file); XmlNamespaceManager ns = new XmlNamespaceManager(document.NameTable); ns.AddNamespace("c", "http://www.collada.org/2005/11/COLLADASchema"); // Read vertex positions var positionsNode = document.SelectSingleNode("/c:COLLADA/c:library_geometries/c:geometry/c:mesh/c:source/c:float_array", ns); var indicesNode = document.SelectSingleNode("/c:COLLADA/c:library_geometries/c:geometry/c:mesh/c:triangles/c:p", ns); var positions = ParseVector3s(positionsNode.InnerText).ToArray(); var indices = ParseInts(indicesNode.InnerText).ToArray(); // Mixing concerns here, but oh well var model = new Model() { VertexBuffer = Buffer.Create(device, BindFlags.VertexBuffer, positions), IndexBuffer = Buffer.Create(device, BindFlags.IndexBuffer, indices), IndexCount = indices.Length, VertexPositions = positions, Indices = indices }; return model; }
public Model Load(string file, Device device) { XmlDocument document = new XmlDocument(); document.Load(file); XmlNamespaceManager ns = new XmlNamespaceManager(document.NameTable); ns.AddNamespace("c", "http://www.collada.org/2005/11/COLLADASchema"); // Read vertex positions var positionsNode = document.SelectSingleNode("/c:COLLADA/c:library_geometries/c:geometry/c:mesh/c:source/c:float_array", ns); var indicesNode = document.SelectSingleNode("/c:COLLADA/c:library_geometries/c:geometry/c:mesh/c:triangles/c:p", ns); var positions = ParseVector3s(positionsNode.InnerText).ToArray(); var indices = ParseInts(indicesNode.InnerText).ToArray(); // Mixing concerns here, but oh well var positionsBuffer = new SlimDX.DataStream(positions, true, false); var indicesBuffer = new SlimDX.DataStream(indices, true, false); var model = new Model() { VertexBuffer = new Buffer(device, positionsBuffer, positions.Length * Vector3.SizeInBytes, ResourceUsage.Default, BindFlags.VertexBuffer, CpuAccessFlags.None, ResourceOptionFlags.None), IndexBuffer = new Buffer(device, indicesBuffer, indices.Length * sizeof(int), ResourceUsage.Default, BindFlags.IndexBuffer, CpuAccessFlags.None, ResourceOptionFlags.None), IndexCount = indices.Length, VertexPositions = positions, Indices = indices }; return model; }