我需要使用C#中的Managed DirectX在运行时制作一个DirectX 3D网格。我无法找到有关如何执行此操作的任何信息。
使用此DirectX调用可以获得球体网格:
Mesh sphere = Mesh.Sphere(device, sphereRadius, sphereSlices, sphereStacks);
这个网格是在运行时构建的。
我需要知道的是如何制作类似的功能:
Mesh shape = MakeCustomMesh(device, vertexlist, trianglelist);
两个列表可以是任何合适的容器/格式。
如果有人能指出我管理的DirectX(C#)示例代码,即使它只是从3个硬编码三角形构建网格,这将是一个很大的好处。
答案 0 :(得分:6)
有一些示例代码显示了如何在MDXInfo上执行此操作。这会创建一个包含多个子集的网格 - 如果您不需要,则更容易。
基本上,您只需创建网格:
Mesh mesh = new Mesh(numIndices, numVerticess, MeshFlags.Managed, CustomVertex.PositionColored.Format /* you'll need to set this */ , device);
然后,您可以使用:
获取网格顶点缓冲区和索引缓冲区,并覆盖它IndexBuffer indices = mesh.IndexBuffer;
VertexBuffer vertices = mesh.VertexBuffer;
然后,适当填写索引和顶点。