将 Direct3D9 CreateSphere 与 Direct3D11 设备一起使用

Use Direct3D9 CreateSphere with Direct3D11 device

我是 SlimDX 的新手,在遗留系统中工作。有一个 Direct3D11 设备正在使用,但我正在尝试使用来自:

的 CreateSphere
SlimDX.Direct3D9.Mesh.CreateSphere(Direct3D9.Device,...)

有没有办法在 Direct3D11 设备上使用 CreateMesh?强制转换为 Direct3D9.Device 不是有效的强制转换。我不明白为什么更新的 API 会删除像创建球体这样简单的功能。

你的问题在于你混淆了两个截然不同的东西。

DirectX API 从来没有 CreateSphere 方法。它包含在帮助库 DXUT 中,该库已被 Microsoft 停用。

只需自己编写或使用预制网格。如果您不知道如何操作,那么您可能过于依赖辅助库了。

当然,您的理解水平被认为创建 3D 球体在某种程度上是一项简单任务的感觉所背叛。不是。有很多不同的方法可以生成 3D 图元,这在很大程度上取决于您正在做什么,这可能是 DXUT 最初停产的原因之一。有很多方法可以排列球体的顶点(UV 球体、Icosphere 等),有很多方法可以对它们进行索引,许多不同的顶点格式需要根据您正在做的事情进行不同的填充。

当这些问题根本不存在时——在可编程图形管道出现之前,拥有这些帮助程序库仍然是有意义的。旧的固定管道是为相对简单的任务预制的,今天你有更多的灵活性,需要付出一些代价才能理解一些事情是如何完成的——比如 HLSL、纹理贴图、光照计算等。