我是SlimDX的新手并且在遗留系统中工作。有一个正在使用的Direct3D11设备,但我尝试使用CreateSphere:
SlimDX.Direct3D9.Mesh.CreateSphere(Direct3D9.Device,...)
有没有办法将CreateMesh与Direct3D11设备一起使用?转换为Direct3D9.Device不是有效的强制转换。我不明白为什么更新的API会删除像创建球体这样简单的功能。
答案 0 :(得分:1)
你的问题的问题在于你混淆了两件截然不同的事情。
DirectX API从未有过CreateSphere方法。这包含在一个帮助程序库DXUT中,该程序库由Microsoft停止使用。
只需编写自己的或使用预制网格。如果你不知道怎么做,你可能还是过分依赖帮助库。
当然,创造3D球体在某种程度上是一项简单的任务的感觉背叛了你的理解水平。不是。有很多不同的方法来生成甚至3D原语,这些原语很大程度上依赖于你正在做的事情,这可能是DXUT首先停产的原因之一。有许多方法来排列球体的顶点(UV球体,Icosphere,......),有许多方法可以对这些顶点格式进行索引,许多不同的顶点格式需要根据您正在进行的操作进行不同的填充。
在可编程图形管道出现之前,当这些问题根本不存在时,拥有这些辅助库仍然是有意义的。旧的固定管道是为相对简单的任务预先制作的,今天你有更多的灵活性,需要花费一些成本来理解一些事情是如何完成的 - 比如HLSL,纹理映射,光计算等。