从DirectX 10移至DirectX 11


10

我已经使用DirectX 9完成了大量的小型业余项目,但是现在该迁移到DirectX 11了。

我有一本关于使用DirectX 10进行3D编程的书,但对于DirectX 11却一无所知。我相信它们非常相似,但是我想知道是否有人可以枚举我需要意识到的代码级的主要区别(或指向现有来源)。



我听说DX10确实与众不同,并且不与DX9向后兼容,而DX11与DX9向后兼容。
11

DX10与DX9完全不同,但是DX11与DX10相当相似,我只是想知道有什么不同。不过奇怪的是,DX11可以与DX9硬件一起使用,但DX10不能使用;)
JohnB 2011年

Answers:


15

SDK文档中有一节介绍了如何迁移到11,其中涵盖了9和10。还有D3D11功能页面

就API形状而言,最大的变化之一是在10和11之间,即11将一堆方法从设备本身移到一个称为设备上下文的新接口(ID3D11DeviceContext特别是),以支持新的多线程功能。

但是,一旦知道了更改,就很容易适应:您将在10中有一个名为“ someDevice->Draw()”的位置,而将获得设备的直接上下文并调用“” immediateContext->Draw()

另一个重大变化是,Effects API脱离了核心,并成为一个独立的源发行版,您必须自己编译和链接。您可能还会注意到一些不推荐使用或已删除的D3DX接口和功能。

除此之外,还有一些功能的新参数以及结构中的一些额外字段,等等。例如,11中缓冲区描述对象有一个10中没有的额外StructureByteStride字段,并且设备创建涉及传递功能级别信息。另外,接口名称也有上述明显的变化(用10s代替10s)。


谢谢,正是我所需要的。我寻找了一些有关变化的官方指南,但不知何故找不到它。谢谢您的回答,也感谢其他花时间帮助您提供良好答案的人:)
JohnB 2011年

真是太有趣了,怎么很快忘记这些东西。我特别讨厌效果编译,花了几天的时间才使它起作用。但是我没有将其包含在我的回答中……
Notabene 2011年

我本来打算将其发布为问题,但是我意识到您的回答已经涵盖了我的大部分顾虑,尽管我希望得到一些确认。对于只使用DX9却希望升级其知识的人,拿起DX11书籍不仅会(显然)教我有关DX11的知识,还可以给我足够的知识,以便在需要时使用DX10?
David Gouveia'4

是的,差不多。

1

我认为主要区别在于,在DX11中DXFont消失了,除了它几乎像notabene所说的那样。那本DX10书应该还不错。转向DX11时我用了那个,我没有问题。但是,您将需要不时查看一下msdn,在API和IIRC的某些地方,API还是有一些细微的差异。


1

无需更改。Directx11仅添加新功能。您只需将数字从ID3D10更改为ID3D11等。


DirectX11添加(如果不谈论炒作的硬件消息传递)Direct Compute:GPGPU的API,与图形管道的连接非常好(我不能对CUDA或openCL这么说)。像素着色器上有多个RW纹理和缓冲区的可能性,这带来了许多新的可能性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.