将 Direct3D9 CreateSphere 与 Direct3D11 设备配合使用

本文关键字:Direct3D9 CreateSphere Direct3D11 | 更新日期: 2023-09-27 18:37:09

我是SlimDX的新手,在遗留系统中工作。 正在使用 Direct3D11 设备,但我正在尝试从以下位置使用 CreateSphere:

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

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

将 Direct3D9 CreateSphere 与 Direct3D11 设备配合使用

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

DirectX API从来没有CreateSphere方法。这包含在一个辅助库DXUT中,该库在Microsoft年停止使用。

只需编写自己的网格或使用预制网格。如果您不知道如何操作,则无论如何您可能过于依赖帮助程序库。

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

当这些问题根本不存在时,拥有这些辅助库仍然是有意义的 - 在可编程图形管道时代之前。旧的固定管道是为相对简单的任务预先制作的,今天你有更大的灵活性,但必须了解一些事情是如何完成的 - 比如HLSL,纹理映射,光照计算等。