凌燕 2009-04-20
DirectX 包含一组 API,通过它能访问高性能硬件的高级功能,如三维图形加速芯片和声卡。这些 API 控制低级功能(其中包括二维 (2D) 图形加速)、支持输入设备(如游戏杆、键盘和鼠标)并控制着混音及声音输出。构成 DirectX 的下列组件支持低级功能:
DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。只是其在3D图形方面的优秀表现,让它的其它方面显得暗淡无光。DirectX开发之初是为了弥补Windows 3.1系统对图形、声音处理能力的不足,而今已发展成为对整个多媒体系统的各个方面都有 决定性影响的接口。
微软在DirectX 9中引入的了2.0/2.X/3.0三个版本的Vertex Shader(顶点着色引擎)以及Pixel Shader(像素着色引擎)。这看似是技术的推进,其实是微软在为nVIDIA和ATI两强搭建竞争舞台,而且其中的内耗直接导致技术普及速度减缓,并且利用率降低,更令软件开发商畏首畏尾。而进入DirectX 10时代之后,微软渴望使用统一渲染架构来引领群雄。
所谓统一渲染架构,大家可以直观地理解为将Vertex Shader、Pixel Shader以及DirectX 10所引入的Geometry Shader统一封装。此时,显卡中的GPU将不会开辟独立的管线,而是所有的运算单元都可以任意处理任何一种Shader运算。在微软的统一渲染架构下,既然所有的运算单元都可以处理任何一种运算,那么就能有效避免这种不合理的分配现象。
l 统一着色器架构:
此前的显卡都采用象素着色器跟顶点着色器分离的架构,这种架构不允许GPU同时处理象素跟顶点着色。比如说显卡在进行顶点着色的时候象素着色器单元就变成闲置,浪费了资源而且还形成了不必要的性能瓶颈。特别是现在分离式架构的GPU 的PS资源都要远高于VS,在这种状况下瓶颈的负担无疑是雪上加霜。而在采用了统一着色器架构的GPU以及运行于DX10的系统中,显卡可以同时对顶点、几何以及象素着色进行处理,而不必等待逐个分别进行。这也使得资源得以合理分配,保证整个架构高效运行。
l geometry shader(几何着色器)功能 :
对于DirectX 9和DirectX 10的区别, DirectX 10将利用DirectX 10来克服他们使用DirectX 9所面临的传统限制。例如,geometry shader(几何着色器)功能将使得游戏可以加速游戏的数学运算性能,诸如在GPU上进行物理运算。
l 运算效率更高:
DirectX 10另一个最令人注目的改进就是可以为API节省计算开销(API overhead)。所谓API overhead就是游戏在处理画面上的每一个物体(object)时(比如人物、岩石等等),都需要先将这些object传送至API,然后再由API传给驱动程序,而这个过程都需要CPU做出处理。当 Object 越多(每一帧画面通常超过几百个),对CPU的负担就越重,所需要消耗的处理时间就越长从而构成瓶颈。而之前DirectX 9就存在API overhead太大造成CPU资源占用率过高的弊病,因为DirectX 9每使用一个object都需要CPU为其做资源确认。而全新的DirectX 10针对这方面作出了改善,采用了全新设计改良的Validation机制。现在只有在该object生成时,才需要CPU做确认,此后在使用Object时就不需要再次确认了,从而大幅降低CPU的负担。简而言之就是DirectX 10可以有效减少CPU处理3D物体的时间,所以现在每一帧画面可以拥有更丰富的3D物体(无论是树木、贴图还是人物)。而CPU被释放出来的空余资源还可以让制作者用于其它诸如物理、人物运动以及AI等方面的计算。DirectX 10还带有一个真正的整数指令集,可以尽可能完成更多的寻址计算,更多的数据打包和解包;当然这些功能并不会创造出一些新的画面特效,但它允许开发人员在GPU中高效的完成更为智能、复杂的渲染工作!