使用Direct3D9 CreateSphere和Direct3D11设备

时间:2015-01-12 13:53:43

标签: c# slimdx

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

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

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

1 个答案:

答案 0 :(得分:1)

你的问题的问题在于你混淆了两件截然不同的事情。

DirectX API从未有过CreateSphere方法。这包含在一个帮助程序库DXUT中,该程序库由Microsoft停止使用。

只需编写自己的或使用预制网格。如果你不知道怎么做,你可能还是过分依赖帮助库。

当然,创造3D球体在某种程度上是一项简单的任务的感觉背叛了你的理解水平。不是。有很多不同的方法来生成甚至3D原语,这些原语很大程度上依赖于你正在做的事情,这可能是DXUT首先停产的原因之一。有许多方法来排列球体的顶点(UV球体,Icosphere,......),有许多方法可以对这些顶点格式进行索引,许多不同的顶点格式需要根据您正在进行的操作进行不同的填充。

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