public DXTreeSkeleton(CS_Tree tree, CS_Params csParams) { InitShaders(); DXTreeSkeleton_TreeTraversal traversal = new DXTreeSkeleton_TreeTraversal(csParams); tree.traverseTree(traversal); BBox = traversal.BBox; for (int i = 0; i < 5; i++) { if (traversal.Vertices2[i].Count != 0) { var stream = new DataStream(traversal.Vertices2[i].Count * Marshal.SizeOf(typeof(DXSKV)), true, true); stream.WriteRange(traversal.Vertices2[i].ToArray()); stream.Position = 0; _vertexBuffer2[i] = new Buffer(DXDevice, stream, new BufferDescription() { BindFlags = BindFlags.VertexBuffer, CpuAccessFlags = CpuAccessFlags.None, OptionFlags = ResourceOptionFlags.None, SizeInBytes = traversal.Vertices2[i].Count * Marshal.SizeOf(typeof(DXSKV)), Usage = ResourceUsage.Default }); stream.Dispose(); List <UInt32> indices = new List <UInt32>(); for (int k = 0; k < traversal.Vertices2[i].Count; k++) { indices.Add((UInt32)k); } stream = new DataStream(indices.Count * sizeof(UInt32), true, true); stream.WriteRange(indices.ToArray()); stream.Position = 0; _indexBuffer2[i] = new Buffer(DXDevice, stream, new BufferDescription() { BindFlags = BindFlags.IndexBuffer, CpuAccessFlags = CpuAccessFlags.None, OptionFlags = ResourceOptionFlags.None, SizeInBytes = indices.Count * sizeof(UInt32), Usage = ResourceUsage.Default }); stream.Dispose(); IndexCount2[i] = indices.Count; } } }
public DXTreeSkeleton(CS_Tree tree, CS_Params csParams) { InitShaders(); DXTreeSkeleton_TreeTraversal traversal = new DXTreeSkeleton_TreeTraversal(csParams); tree.traverseTree(traversal); BBox = traversal.BBox; for (int i = 0; i < 5; i++) { if (traversal.Vertices2[i].Count != 0) { var stream = new DataStream(traversal.Vertices2[i].Count * Marshal.SizeOf(typeof(DXSKV)), true, true); stream.WriteRange(traversal.Vertices2[i].ToArray()); stream.Position = 0; _vertexBuffer2[i] = new Buffer(DXDevice, stream, new BufferDescription() { BindFlags = BindFlags.VertexBuffer, CpuAccessFlags = CpuAccessFlags.None, OptionFlags = ResourceOptionFlags.None, SizeInBytes = traversal.Vertices2[i].Count * Marshal.SizeOf(typeof(DXSKV)), Usage = ResourceUsage.Default }); stream.Dispose(); List<UInt32> indices = new List<UInt32>(); for (int k = 0; k < traversal.Vertices2[i].Count; k++) { indices.Add((UInt32)k); } stream = new DataStream(indices.Count * sizeof(UInt32), true, true); stream.WriteRange(indices.ToArray()); stream.Position = 0; _indexBuffer2[i] = new Buffer(DXDevice, stream, new BufferDescription() { BindFlags = BindFlags.IndexBuffer, CpuAccessFlags = CpuAccessFlags.None, OptionFlags = ResourceOptionFlags.None, SizeInBytes = indices.Count * sizeof(UInt32), Usage = ResourceUsage.Default }); stream.Dispose(); IndexCount2[i] = indices.Count; } } }