作者:三牛 2002年,微软公司制订的DirectX 9绘图函数库标准(以下简称DX9)一举统一电脑游戏的开发标准。此后,为了使游戏开发商能够营造更逼真的视觉效果,更流畅的游戏表现,微软公司又开发出全新的Direct X10标准(以下简称DX10),并一举整合到新一代的Windows Vista操作系统中。DX10似乎更受游戏开发商欢迎,推出不到半年,首批DX10原生游戏已经准备推出。那么,DX10游戏究竟采用了哪些先进的图形技术?DX10显卡在DX10游戏中的性能表现又如何?相信很多朋友都非常感兴趣,下面笔者就与大家作一探讨。
DirectX10 DirectX9画面对比 一、DX10标准的技术特点 相比起上一代的DirectX 9标准,DirectX 10不但有更大的编程弹性,而且进一步提高了3D软件的运行效率。DirectX 10的主要改进如下: 1、使用Unified Shader(统一着色器)设计; 2、引入Geometry Shader(几何着色器); 3、降低对处理器的负荷; 4、更大的编程弹性; 5、硬件规格更严格。 DirectX 10中的“Shader Model”(着色器模型,又称渲染器模型)为4.0版,其最大特点是使用“统一着色器”设计,Vertex Shader(顶点着色器)、Pixel Shader(像素着色器)乃至全新引入的几何着色器都使用相同的指令集,拥有相同数量的指令数和暂存器,让程序员避免因为着色器的类型不同而分别进行优化的困难,从而大大提高编程弹性和开发效率。 硬件使用统一架构的最大好处是,所有着色器由于使用同一组设计,因此设计更加简单。如果想提高性能只需增加更多的着色器数量即可(因为3D绘图的并行运算可行性相当高),也能提高硬件的使用效率。 举例而言,当一个游戏或应用软件主要需要顶点着色器时,可将GPU中的全部着色器都设置为顶点着色器进行运算。与之相对,在DirectX 9中遇到类似的情况时,像素着色器就会闲置,从而造成资源浪费。 正如以往的着色器版本升级,这次Shader 4.0也大大增加了可供程序员使用的资源,例如“Temp Register”(暂存注册器)由原来的32个增加到4096个,“Texture”(材质)也从16层提高到128层等等。
在以往的DirectX版本中,GPU只能处理从CPU传来的资料,从开始到结束的过程中GPU都只能处理同一资料,不会从现有的资料内产生出新资料。如果游戏中出现新物品,又或者物品受到破坏而变形时,都需要CPU重新处理。由于在大部分游戏运行时CPU已经极其忙碌,因而影响到游戏的性能表现。而DirectX 10新引入的几何着色器允许GPU在处理顶点资料后,再通过几何着色器改变物品外型,从而再产生出新顶点。新顶点也可以通过“Stream Out”(流输出层)直接写到内存中,不一定要经过像素着色器处理。当然,除了产生出新顶点外,几何着色器也能减少不需要的顶点,使物品处理更具灵活性。 此外,在DirectX 9或以前版本的DirectX中,最令人失望的是效率欠佳,对处理器的要求过高。因为每一个3D指令都必须先通过CPU处理,给CPU造成相当大的负荷,使游戏中的物品数量不能设计得太多,而且每个物品也不能使用大量的视觉效果。为了解决这个问题,DirectX 10引入全新设计,包括取消以往所有固定功能的API,使API更为“苗条”、效率更高。另外在DirectX 9中,每一次绘图前都必须再次验证资源的正确性,而在DirectX 10中则只在物品首次产生时验证一次,大大降低对CPU资源的占用。据ATI公司估计,现在API占用约40%的运行时间,到DirectX 10时则会大幅降低到20%,使CPU能够有更多时间处理其他工作,从而在游戏内增加更多的物品和视觉效果,使游戏画面变得更为真实。
|