我已经使用DirectX 9完成了大量的小型业余项目,但是现在该迁移到DirectX 11了。
我有一本关于使用DirectX 10进行3D编程的书,但对于DirectX 11却一无所知。我相信它们非常相似,但是我想知道是否有人可以枚举我需要意识到的代码级的主要区别(或指向现有来源)。
我已经使用DirectX 9完成了大量的小型业余项目,但是现在该迁移到DirectX 11了。
我有一本关于使用DirectX 10进行3D编程的书,但对于DirectX 11却一无所知。我相信它们非常相似,但是我想知道是否有人可以枚举我需要意识到的代码级的主要区别(或指向现有来源)。
Answers:
SDK文档中有一节介绍了如何迁移到11,其中涵盖了9和10。还有D3D11功能页面。
就API形状而言,最大的变化之一是在10和11之间,即11将一堆方法从设备本身移到一个称为设备上下文的新接口(ID3D11DeviceContext
特别是),以支持新的多线程功能。
但是,一旦知道了更改,就很容易适应:您将在10中有一个名为“ someDevice->Draw()
”的位置,而将获得设备的直接上下文并调用“” immediateContext->Draw()
。
另一个重大变化是,Effects API脱离了核心,并成为一个独立的源发行版,您必须自己编译和链接。您可能还会注意到一些不推荐使用或已删除的D3DX接口和功能。
除此之外,还有一些功能的新参数以及结构中的一些额外字段,等等。例如,11中的缓冲区描述对象有一个10中没有的额外StructureByteStride
字段,并且设备创建涉及传递功能级别信息。另外,接口名称也有上述明显的变化(用10s代替10s)。