论文部分内容阅读
DirectX 12仅适用于Windows 10,这个微软重新打造的图形界面拥有更强大的性能,并且能够在一定程度上兼容旧的显示卡。
现如今随处可见使用智能手机玩游戏的用户,许多家庭用户则倾向于选择连接电视机使用的游戏机,但是对于真正的游戏玩家而言,电脑仍然是首选。以德国为例,根据YouGov的调查显示,约有55%的游戏玩家仍然使用桌面电脑玩游戏,另有约42%的用户使用笔记本电脑。为此,微软在发布Windows 10时,重新打造了新的DirectX图形库(12版)。在该版本的DirectX上微软公司特别增强了其性能,而且不同于以往的DirectX版本,用户不必等待新的显示卡就能获得DirectX 12带来的性能增强效果,因为DirectX 12基本上是一个软件的优化,近5年的硬件都可以从中获得增益,但前提是用户必须使用Windows 10,全新的DirectX只能运行在Windows 10上。
DirectX 12修正了旧版DirectX的一个致命弱点:代码没有针对多核心处理器进行优化。显示卡并不是自己完成所有任务,它需要通过CPU负担一部分的任务,而DirectX此前的版本只能够通过一个核心或线程执行任务。对于多核心处理器来说,这明显是一种浪费。AMD已经解决了这一问题,该公司推出的图形界面Mantle可以支持多核心处理器,通过2~4个核心进行工作。Mantle可以兼容各种游戏引擎,但是它只能够用于AMD显示卡,这导致其没有被广泛接受。不过,尽管Mantle不是很成功,但AMD的努力却也已经迫使微软对DirectX进行优化。
微软新的Windows显示驱动程序模型2.0(WDDM2.0)降低了驱动程序的作用,让游戏开发者可以像游戏机一样更好地利用电脑的硬件资源。因此,当游戏正在运行的时候,驱动程序将在用户模式下运行,尽可能地减少对游戏引擎的阻碍。这使得游戏引擎可以更直接访问硬件,可以更好地调整CPU、内存和显示卡的工作方式与工作量。在资源管理方面,WDDM 2.0设置了一个统一的虚拟空间来存储地址,虚拟存储空间覆盖显示卡的存储器和电脑的内存,因此,GPU可以不必经由显示卡驱动传输数据到速度较慢的电脑内存上。
DirectX的游戏引擎也承担统一调配所有CPU内核的责任:决定如何处理命令缓冲区。命令缓冲区是由CPU创建,用于挂起待处理任务的存储区域。在DirectX 11中该区域由驱动程序接管,但是它不允许分配任务到多个内核或线程的缓冲区,现在,DirectX 12已经被允许这样做。这些由CPU发送到GPU的绘图指令包含GPU要创建的对象颜色、大小和位置的信息。通过分配多个线程缓存,现在DirectX 12处理最大数量的绘图指令。对于游戏来说这是一件好事,可以渲染每一帧的多个对象。在这方面,甚至旧的显示卡也可以在DirectX 12的支持下获得性能的提升。然而,这并不适用于现有的游戏:因为这些游戏的游戏引擎还未能够兼容DirectX 12。
DirectX12另一项新功能是加快单个帧的渲染速度,DirectX中通过多级流水线计算对象,包括一个对象的光照、纹理和位置。在11版本的DirectX,流水线必须对各帧和对象重新设置。第12版的DirectX保存了所有进入流水线的对象,如果该对象在下一帧没有什么变化,那么就没有重新计算的必要,可以直接将对象显示出来。如果只有一级流水线出现变化,那么只重新计算该流水线即可。
DirectX 12的多适配器模式允许整合电脑上所有可用的图形资源,例如多个显示卡。现在显示卡可以自己完成大多数帧的处理工作,并将其余的事情留给CPU的图形单元。由于专业的游戏玩家可能配备多个显示卡,所以多适配器模式可以提供极大的增益。以往,多个显示卡只能够交替地呈现帧,这种工作方式并不总是能够顺利进行,显示卡存储器也无法得到充分利用,而现在所有的存储器都可以被利用,多个显示卡甚至可以以瓜分单个帧的方式来协同工作。
虽然旧的显示卡也可以从DirectX 12中获益,但是它们并不能支持所有DirectX 12的功能级别。这些级别涉及一些渲染功能,可以显示更多的细节或更快的执行效果。功能级别11.0和11.1在DirectX 11中已经出现,它们代表显示卡对于DirectX 12最起码的支持。新的功能级别12.0和12.1主要包含可以使游戏看起来更漂亮的功能,例如“保守光栅第1层(Tier 1)”功能将可以更精确地呈现阴影。第一个DirectX 12游戏预计将在今年年底发布,除了支持DirectX 12的新一代显示卡之外,在DirectX 12的支持下,老显示卡也可以有很多潜力可以挖掘,但如何让老显示卡可以在新系统上更好地工作取决于程序开发人员。
现如今随处可见使用智能手机玩游戏的用户,许多家庭用户则倾向于选择连接电视机使用的游戏机,但是对于真正的游戏玩家而言,电脑仍然是首选。以德国为例,根据YouGov的调查显示,约有55%的游戏玩家仍然使用桌面电脑玩游戏,另有约42%的用户使用笔记本电脑。为此,微软在发布Windows 10时,重新打造了新的DirectX图形库(12版)。在该版本的DirectX上微软公司特别增强了其性能,而且不同于以往的DirectX版本,用户不必等待新的显示卡就能获得DirectX 12带来的性能增强效果,因为DirectX 12基本上是一个软件的优化,近5年的硬件都可以从中获得增益,但前提是用户必须使用Windows 10,全新的DirectX只能运行在Windows 10上。
DirectX 12修正了旧版DirectX的一个致命弱点:代码没有针对多核心处理器进行优化。显示卡并不是自己完成所有任务,它需要通过CPU负担一部分的任务,而DirectX此前的版本只能够通过一个核心或线程执行任务。对于多核心处理器来说,这明显是一种浪费。AMD已经解决了这一问题,该公司推出的图形界面Mantle可以支持多核心处理器,通过2~4个核心进行工作。Mantle可以兼容各种游戏引擎,但是它只能够用于AMD显示卡,这导致其没有被广泛接受。不过,尽管Mantle不是很成功,但AMD的努力却也已经迫使微软对DirectX进行优化。
Windows10变成了“游戏机”
微软新的Windows显示驱动程序模型2.0(WDDM2.0)降低了驱动程序的作用,让游戏开发者可以像游戏机一样更好地利用电脑的硬件资源。因此,当游戏正在运行的时候,驱动程序将在用户模式下运行,尽可能地减少对游戏引擎的阻碍。这使得游戏引擎可以更直接访问硬件,可以更好地调整CPU、内存和显示卡的工作方式与工作量。在资源管理方面,WDDM 2.0设置了一个统一的虚拟空间来存储地址,虚拟存储空间覆盖显示卡的存储器和电脑的内存,因此,GPU可以不必经由显示卡驱动传输数据到速度较慢的电脑内存上。
DirectX的游戏引擎也承担统一调配所有CPU内核的责任:决定如何处理命令缓冲区。命令缓冲区是由CPU创建,用于挂起待处理任务的存储区域。在DirectX 11中该区域由驱动程序接管,但是它不允许分配任务到多个内核或线程的缓冲区,现在,DirectX 12已经被允许这样做。这些由CPU发送到GPU的绘图指令包含GPU要创建的对象颜色、大小和位置的信息。通过分配多个线程缓存,现在DirectX 12处理最大数量的绘图指令。对于游戏来说这是一件好事,可以渲染每一帧的多个对象。在这方面,甚至旧的显示卡也可以在DirectX 12的支持下获得性能的提升。然而,这并不适用于现有的游戏:因为这些游戏的游戏引擎还未能够兼容DirectX 12。
使用所有的硬件资源
DirectX12另一项新功能是加快单个帧的渲染速度,DirectX中通过多级流水线计算对象,包括一个对象的光照、纹理和位置。在11版本的DirectX,流水线必须对各帧和对象重新设置。第12版的DirectX保存了所有进入流水线的对象,如果该对象在下一帧没有什么变化,那么就没有重新计算的必要,可以直接将对象显示出来。如果只有一级流水线出现变化,那么只重新计算该流水线即可。
DirectX 12的多适配器模式允许整合电脑上所有可用的图形资源,例如多个显示卡。现在显示卡可以自己完成大多数帧的处理工作,并将其余的事情留给CPU的图形单元。由于专业的游戏玩家可能配备多个显示卡,所以多适配器模式可以提供极大的增益。以往,多个显示卡只能够交替地呈现帧,这种工作方式并不总是能够顺利进行,显示卡存储器也无法得到充分利用,而现在所有的存储器都可以被利用,多个显示卡甚至可以以瓜分单个帧的方式来协同工作。
虽然旧的显示卡也可以从DirectX 12中获益,但是它们并不能支持所有DirectX 12的功能级别。这些级别涉及一些渲染功能,可以显示更多的细节或更快的执行效果。功能级别11.0和11.1在DirectX 11中已经出现,它们代表显示卡对于DirectX 12最起码的支持。新的功能级别12.0和12.1主要包含可以使游戏看起来更漂亮的功能,例如“保守光栅第1层(Tier 1)”功能将可以更精确地呈现阴影。第一个DirectX 12游戏预计将在今年年底发布,除了支持DirectX 12的新一代显示卡之外,在DirectX 12的支持下,老显示卡也可以有很多潜力可以挖掘,但如何让老显示卡可以在新系统上更好地工作取决于程序开发人员。