Direct3D编程新手:11对12

时间:2015-11-29 19:01:01

标签: direct3d direct3d11 direct3d12

对于D3D编程的新手,应该直接学习D3D12还是D3D11需要潜入D3D12之前?

假设从头开始和C ++的正确知识,我应该走哪条路?

1 个答案:

答案 0 :(得分:13)

我已回答this question before所以你应该看看那篇文章。

简而言之,Direct3D 12应被视为" DirectX Extreme Pro"。它假设您已经是Direct3D 11运行时工作方式的专家,您可以自己编写它。它旨在允许中间件引擎和低级图形开发人员最大程度地控制GPU的行为。 Direct3D 11也是一个低水平的"图形API,但DirectX 12具有如此薄的抽象,现代GPU的许多复杂性直接暴露给应用程序员; Direct3D 11隐藏的复杂性。

Direct3D 12非常强大,但是为了实现非常低的CPU开销,API和运行时几乎没有帮助你。这暴露了驱动程序的内存模型,并使GPU / CPU同步成为一个手动过程,类似于无锁编程'在CPU上。

如果您对Direct3D完全陌生,我强烈建议您先使用Direct3D 11开始使用DirectX Tool Kit及其tutorials。一旦掌握了这一点,您应该处于一个好地方当它对你的应用程序有意义时,转移到Direct3D 12。

Direct3D 11上有大量的教程,样本,书籍和其他教育资料.Direct3D 12材料有点薄,主要由DirectX-Graphics-Samples GitHub回购中的内容组成。我目前正致力于为 DirectX工具包添加DirectX 12支持,但即使它可用,您也会发现从Driect3D 11开始比尝试跳脚要容易得多 - 首先进入DirectX 12。

要记住的另一件事是w.r.t。到DirectX 12:仅在支持DirectX 12的视频驱动程序的Windows 10系统上受支持。这包括大多数Direct3D Feature Level 11.0+硬件,包括NVIDIA Fermi,Kepler,Maxwell; AMD GCN;和英特尔的Haswell,Broadwell和Skylake。但是,这不包括任何旧的视频卡。请参阅DirectX 12: A Major Stride for GamingAMD DirectX 12 TechnologyDirectX Developer Blog

更新: DirectX Tool Kit for DirectX 12现已推出,包括basic tutorials。在处理Direct3D 12之前,您应该专注于学习Direct3D 11.DirectX 12是专为图形专家设计的API,对新手来说是非常不可原谅的。 DirectX工具包有助于软化边缘,但不会太多。一般来说,除非你达到Direct3D 11的CPU性能限制,否则不需要使用Direct3D 12.也就是说,对于图形专家而言,值得学习如何更好地理解底层GPU硬件的方式工作,或那些想要将硬件推向性能极限的人。