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