泡泡网显卡频道 PCPOP首页      /      显卡     /      评测    /    正文

完美DX10!ATI新王者HD2900XT权威评测

● 第三章:DirectX发展回顾以及DirectX10详细介绍

第一节:技术背景——DirectX 的发展回顾和API相关基本常识。

    Microsoft发布的DirectX 10代表了自从可编程Shader出现以来在3D API方面的最巨大的进步,也是自DirectX诞生以来,又一次彻底的重新设计。通过一番脱胎换骨般的重建,DirectX 10展现出一系列非常醒目的新特性,包括高度优化的运行时,强大的Geometry Shader,纹理数组等等;这些特性将引领PC实时三维图形进入一个全新的世界。

{imageTitle}

DirectX总览

    在过去的十年中,DirectX已经稳步成为了Microsoft Windows平台上进行游戏开发的首选API。每一代的DirectX都带来对新的图形硬件特性的支持,帮助游戏开发者们视线更惊人的特效。那么我们也就按照DirectX发展的轨迹,以Direct3D为重点,为读者完整回顾下DirectX的辉煌历程。

●   DirectX简介

    DirectX是Microsoft开发的基于Windows平台的一组API,它是为高速的实时动画渲染、交互式音乐和环境音效等高要求应用开发服务的。

{imageTitle}
 
 DirectX机制
 
    微软不仅开发了DirectX标准平台,并且根据硬件制造厂商和游戏厂商合作共同更新升级DirectX的标准。硬件制造商按照此标准研发制造更好的产品,游戏开发者根据这套标准开发游戏。也就是说,无论硬件是否支持某种特效,只要DirectX标准中有,游戏开发者就可以把它写到游戏中,当这个游戏在硬件上运行,如果此硬件根据DirectX标准把这个效果做到了此硬件驱动程序中,驱动程序驾驭其硬件算出结果,用户就可以欣赏到此效果。这就是“硬件设备无关性”,是DirectX真正意义所在。
{imageTitle}
 
 DirectX架构

    通常,Windows对硬件访问的管制非常严格,用通常的办法不易访问,但DirectX通过“硬件抽象层(HAL)”给予了开发人员直接访问硬件的能力,HAL不仅解决了硬件及兼容性问题,而且开发人员可以利用它直接访问计算机的某些硬件设备,例如显示设备的直接显存控制和渲染,键盘、鼠标和游戏杆的控制的直接访问控制,音频设备的直接音频混合与输出能力等等,因此开发人员可以充分利用硬件加速将程序的性能优化到一个新的高度,如果目标机器不支持相应的硬件加速,DirectX还可以仿真加速器以提供强大的多媒体环境。DirectX家族包含的成员有Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectSound、DirectDraw、DirectVoice、 DirectVideo和 DirectShow 。

●  DirectX发展历程

1.DirectX 1.0

{imageTitle}
 
 DirectX 1.0

    1995年9月,伴随着Windows95的发布,微软推出了DirectX 1.0。其中,来自于ATI的开发团队为DirectX的开发带来了最基础的图形技术。第一代的DirectX很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形API-OpenGL,缺乏硬件的支持成了其进一步扩大影响的最大障碍。DirectX 1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图像进行加速。这时候的DirectX不包括Direct3D,还处于一个初级阶段。

2.DirectX 2.0/2.0a

{imageTitle}

DirectX 2.0

    1996年,伴随着Windows95的成功,微软实行了一项新计划,以支持在Windows95上运行更多的3D游戏,目标是扩大市PC领域的游戏市场。于是微软收购了英国的Rendermorphics,Ltd.并得到了名为RealityLab的3D API。经重新整理,微软发布了新的3D API——Direct3D,并整合在DirectX2.0中。

    DirectX2.0最大的改善是在Direct Draw,而且为当时风靡全世界的《RedAlert》和《Diablo》所支持,《RedAlert》的Windows版本和《Diablo》都是在DirectX的标准上开发的。除了2D以外,DirectX2.0的D3D部分的雏形基本完成,由于当时3D游戏较少,很多都是基于DOS开发的。世嘉公司的VR战士的PC版本就是基于DirectX2.0开发完成的,虽然效果粗糙了一些,但Direct 3D魅力还是可以感受到的。

    在DirectX 2.0中,采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图像进行加速计算的。DirectX 2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。从DirectX 2.0开始,整个DirectX的设计架构雏形就已基本完成。但是当时3D游戏程序更多的是基于3DFX的Glide以及ID的QUAKE引擎(OpenGL)开发,支持Direct 3D的游戏很少。

3.DirectX 3.0/3.0a

    1996年后期,微软发布了DirectX 3.0,DirectX 3.0是DirectX 2.0的简单升级版,它对DirectX 2.0的改动并不多。包括对DirectSound(针对3D声音功能)和DirectPlay(针对游戏/网络)的一些修改和升级。DirectX 3.0集成了较简单的3D效果,还不是很成熟。

    在微软不遗余力的推广下,DirectX的魅力被众多软硬件厂商看好,让D3D有了与OpenGL与Glide格斗的资本。从这个版本开始,很多玩家知道了DirectX存在,也是这个时候开始出现了可以支持Direct 3D的加速卡,如Nvidia的Riva128,Intel的I740。

    当然微软在Direct3D的推广中并不是一帆风顺,也出现过不少波折。微软当时拒绝了在Window95上支持OpenGL并采取异常手段收回对OpenGL的MCD驱动接口的支持,这个做法导致了很多游戏开发者的反对。QUAKE之父John Carmack公开声明拒绝D3D,著名游戏制作人Chris Hecker在游戏开发杂志上发表了两套API的全面分析,并以微软应放弃D3D为结论。以John Carmack为首的56名首席游戏开发者曾联名至信微软,要求其发行OpenGL MCD驱动。

    微软则坚持自己的一贯立场:Direct3D面向通用(high-volume)、高性能应用,认为OpenGL只面向高精度的专业CAD应用。所以微软继续增加对Direct3D的投资,并继续削减对OpenGL的投入。

4.DirectX 5.0/5.1/5.2

    1997年6月,微软公司跳过了DirectX 4.0,直接推出了DirectX 5.0。DirectX 5.0对Direct3D做出了很大的改动,加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强,此外还加入了S3的纹理压缩技术。

{imageTitle}
 
DirectX 5.0架构

    同时,DirectX 5.0在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备。因此,DirectX发展到DirectX 5.0才真正走向了成熟。此时的DirectX性能完全不逊色于其它3D API,而且大有后来居上之势。

    微软的投入也得到了回报,3DFX的GLIDE API开始逐渐失去了过去在游戏开发领域的优势地位,最著名的两个例子就当时称得上是风靡世界的古墓丽影2和优品飞车2,这两个过去本来是GLIDE的御用游戏,都加入了对D3D API的支持,当时著名的Riva 128等非VOODOO显卡也可以通过D3D接口完美的运行游戏。

 5.DirectX 6/6.1

{imageTitle}
 
DirectX 6

    1998年7月,DirectX 6正式发布,它的新特性有:几何形体的灵活顶点格式定义、几何形体的顶点缓冲存储、支持多纹理渲染、自动纹理管理、可选深度缓冲(使用Z Buffer或W Buffer)、通过凹凸环境贴图(ENV BUMP ENVMAP,同级别显卡中只有MATROX的G400支持)为反光面和水波特效提供逐像素的渲染和贴图能力。DirectX 6的3D效果更丰富,而且借助硬件的强大性能,可以渲染出高分辨率下的32位色的图像效果。可以看到,这一时期,DirectX 的技术进步速度也远远超过了GLIDE。

6.DirectX 7/7.1

    1999年9月,微软推出了DirectX 7.0。DirectX7最大的进步就是支持硬件T&L(Transforms&Lighting),也就是“坐标转换和光源”。上一章已经有过介绍,此处不再赘述。

{imageTitle}
 
DirectX 7

    DirectX 7的其它新特性有:立方体表面的环境贴图、几何渲染、改进的纹理渲染、自动纹理坐标生成、纹理转换、投影纹理和任意面裁剪、D3DX实用库等。

    DirectX 7的发布无疑给了GLIDE的致命的一击,DirectX 7提供的特效更丰,D3D函数库的引入方便了开发人员的使用,迅速得到游戏厂商的青睐。为了挽回局面,3DFX甚至还开放GLIDE源代码,但最终GLIDE还是被广大开发人员所离弃。没有了GLIDE的3DFX最终也以被自己的老对手NVIDIA收购而告终。

7.DirectX 8.0/8.1

    2000年9月,微软正式推出了划时代的DirectX 8 ,将可编程的着色管线概念正式引入到GPU,新的shaders(着色器)数据处理方式也是DirectX 8中最具意义的创新。Shader采用了新的数据处理程序模型,这与旧有的预定义模型是不同的。这种模型中,数据是透过virtual machine以一个类似于带有特殊汇编指令集的pre-arranged(事先安排好)程序进行处理的,程序员可以直接对其进行编程。
 

{imageTitle}

DirectX 8
    凭借可编程几何管线和可编程像素管线,使用者可以自由的控制几何和像素的代码设计。这对于图形开发者是空前的,他们可以通过基本的着色器,利用开发工具,产生全新的,极具创造力的效果。也正是可编程管线的引入,为GPU发展翻开了新的篇章,GPU开始向SIMD处理器方向发展,凭借强大的并行处理性能,使得GPU开始用有了部分流式处理器特征,逐渐开始被用于工程方面的通用计算。

{imageTitle}
 
DirectX 8架构

    DirectX 8的其他特性:编写定制的硬件着色器,例如通用纹理组合公式,逐像素光照(凹凸贴图),适用于实现照片(真实)级镜面效果的逐像素环境贴图或者任何其他开发者定义的算法。 支持多重采样渲染 、高性能的粒子系统渲染、 3D空间纹理 、允许范围衰减、包含了用于输出Direct3D蒙皮网格的三维内容创建工具插件,使用了Direct3D多种不同技术,多分辨率层次细节(LOD)几何、索引顶点混合 、扩充了Direct3DX实用库。

    2001年底,Microsoft推出了DirectX8.1,主要的改进是增加了PixelShader 1.2/1.3/1.4。在此之前,Microsoft差不多每年推出一个DirectX新版本,到DX8以后,这个速度开始减缓,以后的DirectX9也是如此。主要的原因是自 DirectX 7以后,每一个版本(major release)实际对应于一代新的显示核心,硬件的更新周期要长于软件,所以作为图形API的DirectX要照顾到软件更新的速度。另外,游戏开发的复杂程度也越来越高,开发周期也越来越长,而游戏开发人员并不希望在开发过程中更新API。

8.DirectX 9.0/9.0b/9.0c

 

{imageTitle}
 
DirectX 9.0

    2002年底,微软发布DirectX9.0。DirectX 9中Shader的渲染精度已达到浮点精度,为GPU向通用计算领域的发展迈出了决定性的一步。全新的VertexShader(顶点着色引擎)编程将比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。全新高级着色器语言的引入,使得程序员从底层代码中解放出来。

{imageTitle}
 
DirectX 9详细规格

    PS 2.0具备完全可编程的架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外PS1.4只能支持28个硬件指令,同时操作6个材质,而PS2.0却可以支持160个硬件指令,同时操作16个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,电影级别的显示效果轻而易举的实现。

    VS 2.0通过增加Vertex程序的灵活性,显著的提高了老版本(DirectX8)的VS性能,新的控制指令,可以用通用的程序代替以前专用的单独着色程序,效率提高许多倍;增加循环操作指令,减少工作时间,提高处理效率;扩展着色指令个数,从128个提升到256个。

    DirectX9的出现使得OpenGL API在游戏开发领域的应用走到了尾声。目前,除了ID SOFTWARE自家的DOOM、QUAKE系列,基于OpenGL API开发的游戏已经屈指可数了。微软把OpenGL API的应用限制在专业工作站领域的目的已经达到。

{imageTitle}
 
DirectX9.0c

    DirectX9也有DirectX9.0b和DirectX9.0c两个版本,由于篇幅关系,此处不再详细介绍。

{imageTitle}

0人已赞
第1页:完美DX10!ATI新王者HD2900XT权威评测第2页:完美DX10!ATI HD2000系列评测提纲第3页:2007显卡年!AMD/NVIDIA决战图形市场第4页:奋起直追!全新Radeon HD 2000产品线解析第5页:功能化发展!Radeon HD2000系列亮点逐个看第6页:第二章:统一渲染架构解析第7页:第二章/第二节:革命!R600的统一渲染架构第8页:4第9页:第三章:DirectX发展回顾以及DirectX10详细介绍第10页:第二节 DX10的架构特性 以及带来的好处第11页:第三章/第三节:ATI 3Dc功能回顾第12页:3第13页:3第14页:3第15页:3第16页:集众家之长,R600架构总览第17页:R600架构分块介绍第18页:Setup Engine(装配引擎)第19页:Ultra-Threaded Dispatch Processor(超线程分配处理器)第20页:Stream Processing Units(流处理器)第21页:R600的超标量SIMD架构第22页:4第23页:5第24页:ATI片内缓存相关技术第25页:Memory Control(显存控制器)第26页:第六章 R600的神工鬼斧——Tessellation技术第27页:第六章\\第二节 传统的虚拟3D技术回顾第28页:第二小节 凹凸贴图 Bump mapping第29页:第六章\\第二节\\第三小节 法线贴图(normal mapping)第30页:视差贴图技术parallax occlusion mapping第31页:位移贴图(displacement mapping)第32页:Ati的独门秘籍 Trumform 第33页:Tessellation技术第34页:神奇的小数点——细分网格算法中小数位的意义第35页:Tessellation效率的源泉——控制“笼子”第36页:Tessellation技术的流程第37页:Tessellation技术的应用和前景第38页:1第39页:AA发展第40页:CFAA第41页:123第42页:ATI显卡产品形象代言人——Ruby四度出击第43页:X800 & X850 Ruby第44页:DX9C的最高境界 X1800 Ruby第45页:R600 DX10 Ruby高清晰截图赏析第46页:R600 DX10 Ruby引擎和技术解析第47页:23第48页:R600 DX10 Ruby所用图形引擎揭秘第49页:1第50页:2第51页:第九章\\第二节第52页:庞大的运算资源,R600单卡就能物理加速第53页:3第54页:第四章:AMD高清视频功能解析第55页:22第56页:第三节 硬件视频加速第57页:第四节 UVD 引擎解码流程第58页:第五节 UVD测试第59页:第一节 电脑音频的数码之路第60页:第二节 HDMI数字音频技术背景第61页:第三节 各种显卡HDMI接口方案第62页:第四节 R600系列方案第63页:第五节:实战R600音频播放第64页:第六节 HD 2900XT怎么用?第65页:显卡介绍第66页:123123第67页:显卡介绍第68页:123第69页:显卡介绍第70页:3第71页:123123第72页:测试系统配置和设置第73页:阿苏大发送颠覆第74页:113123第75页:4第76页:05第77页:06第78页:游戏第79页:游戏第80页:123第81页:6第82页:6第83页:交火第84页:功耗测试第85页:1第86页:第二节 客观,公正,专业,全面,泡泡网为您带来最权威的DX10测试第87页:第三节 Call of Juarez游戏DX10测试 第88页:第四节 DirectX SDK测试(微软官方2007年四月版)第89页:第四小节:Draw Predicated第90页:第七小节:MotionBlur10第91页:第十小节:Skining 10第92页:第十四章 总结 另觅蓝海!AMD让ATI看得更远第93页:123

关注我们

泡泡网

手机扫码关注