Introduction to 3D Game Programming with Directx12 0

(一)Directx12现状

  从Directx9.0以来,DirectX的第一次版本升级都牵动业内及整个游戏世界的脉搏,也给人们很多希望和期许。自2015年到现在,Directx12伴随WIN10发布已经有三年时间,WIN10应该是得到了认可,而伴随WIN10而来的重大更新的Directx12却显得不那么风光。之前,微软给Directx12的最大卖点是性能的巨大提升,而两年来的游戏产品却给出了相反的结论。

这里写图片描述

  从上图可以看到,除个别游戏,当前公司开发的游戏在Directx12下性能非但没有提升,一些还略有下降,难怪游戏公司不喜欢,游戏玩家也不喜欢。从这两年的情况来看,Directx12现状并不乐观,Directx12目前的表现也并不像一个底层API应有的水平。事实上,前几次DirectX的更新都带来了新的几乎可以立即应用上的技术特性,也使得画质有比较大的提升,通观这次的Directx12并没有带来新的画面特效。但上图也有特例,部分游戏性能确实有相当大的改观,这也值得我们反思。

(二)Directx12优劣

  微软之前曾宣称,Directx12对多核心CPU的利用几乎是完美线性增长的,也就是说四核心能接近单核心的四倍,这也是Directx12的最大卖点,也是最为吸引人的地方,虽然目前Directx12似乎并不受待见,但我们还是有必要深研一下其中的根源,探究一下Directx12的优劣,当然,优劣是相对的,某些情况下的优势可能也会恰恰是另一种情况下的劣势,这是符合辩证法的。
  Directx12最重要的变化就是其更接近底层硬件。过多的层级抽象在带来使用便捷的同时必然会带来性能的降低,Directx12在贴近硬件的路上走得很深入,因此能更加有效的发挥GPU、CPU的性能,原生的命令队列设计可以更加有效的利用多核CPU,资源绑定方式的变化带来了校验方式的变革,GPU与CPU的异步设计能更多的释放双方的性能潜力。因此来说,Directx12的设计确实是符合了多CPU核心时代发展的要求,能显著利用多核心的能力。
  Directx12在其他架构设计上也是充分考虑了性能需求,如PSO、根描述符,资源绑定等方面都是以“性能优先”作为设计的出发点的。这是对Directx11的重大更新,也更加符合当前硬件资源现状和未来发展趋势。
  正是因为Directx12过多的考虑了性能,在很多架构设计上都做了调整,用翻天覆地的架构重新设计来形容也不过分,重新设计必然影响建立在这之上的游戏开发设计,这带来的直接后果就是对产品过渡支持不够,这非常像Vista的处境。在原有游戏基础上支持Directx12是不彻底的,也发挥不出Directx12的优势和潜能,虽然表面上产品是支持了Directx12,但这种支持是通过转换来实现的,而这Directx11到Directx12在架构上的巨大差异,导致这种转换并不成功。这就是前图出现的游戏在Directx12上反而比Directx11上性能更差的根本原因。
  Directx12为更加有效利用硬件资源,将硬件的管理交给了应用开发者,将内存管理、资源转换屏障、GPU/CPU同步都交给了应用开发者,相较以往,利用Directx12开发应用的成本更高了,不仅是开发成本,还有学习成本,都大大的提高了。Directx12要求应用开发者对硬件有比较深入的理解和把握能力,这也对开发人员素质提出了更高的要求。
  基于上面的分析,就不难理解Directx12的现状了,国内目前对Directx12的学习还处于萌芽阶段,相关资料也是少之又少。

(三)Directx12未来

  Directx12对性能的极致追求是符合时代发展规律的,硬件的发展必然要求与之相适应的软件配套,多核硬件代表着未来,因此,Directx12是面向未来的硬件图形API,虽然目前来看并没有带来预期的效果,但随着时间的推移,其必定能撑起发展中的人们对性能的渴求和希望。

(四)我们的工作

  Introduction to 3D Game Programming with Directx9(红龙书)奠定了其在Directx API入门导读的权威。时至今日,Introduction to 3D Game Programming with Directx系列仍是学习Directx API的“宝典”,目前,国内这方面书籍非常之少(近期,张羽乔出了本《Direct3D 12编程指南》),我们接下来将认真研读Introduction to 3D Game Programming with Direct12这本书,并将为该书的所有编程习题提供解题思路,以期后来者能更快的加入到Direct12的发展中来,促进国内图形处理领域的发展。
  关于该书中的数学部分,因为公式众多,编辑困难,可能以后会以另一种方式处理,本系列不包括数学部分的解答。

参考文献

1、教程:将应用迁移到 DirectX* 12 – 第 3 部分     教程:将应用迁移到 DirectX* 12 – 第 3 部分
2、2017年DX12驱动游戏现状:曾让人充满希望     2017年DX12驱动游戏现状:曾让人充满希望

猜你喜欢

转载自blog.csdn.net/yolon3000/article/details/79748736