Direct3D编程新手:11对12

Cod*_*gry 7 direct3d direct3d11 direct3d12

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

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

Chu*_*urn 18

我之前已回答过这个问题,所以你应该看看那篇文章.

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

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

如果你是Direct3D的新手,我强烈建议你从DirectX工具包开始,使用Direct3D 11 的教程.一旦你掌握了这一点,你应该在适合你的应用程序的时候转移到Direct3D 12 .

Direct3D 11上有大量的教程,样本,书籍和其他教育资料.Direct3D 12材料有点薄,主要由DirectX-Graphics-Samples GitHub repo 上的内容组成.我正在努力为DirectX工具包添加DirectX 12支持,但即使它可用,你会发现从Driect3D 11开始比尝试跳入DirectX 12更容易.

另外要记住的是DirectX 12:仅在支持DirectX 12的视频驱动程序的Windows 10系统上支持.这包括大多数Direct3D功能级别 11.0+硬件,包括NVIDIA Fermi,Kepler,Maxwell; AMD GCN; 和英特尔的Haswell,Broadwell和Skylake.但是,这不包括任何旧的视频卡.请参阅DirectX 12:游戏的主要步伐,AMD DirectX 12技术DirectX开发人员博客

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

  • [关于](https://english.stackexchange.com/questions/13809/what-does-wrt-mean) (2认同)