Directx发展史

DirectX发展史及DirectX10.0

如果说PC用户不会不认识Windows操作系统的话,那么游戏用户也不会不知道DirectX的大名。想必大家都还记得1996年时微软随红色警戒、FIFA96等经典游戏一起发行的DirectX3.0吧,当时DirectX是以GameSDK的软件开发工具包形式出现的。但是谁也没有想到的时,经过几年的发展,DirectX竟然成为Windows操作系统极其重要的一部分,也是微软牵制众多硬件厂商的致命法宝。DirectX整合了Direct3D接口,使得3DFX苦心经营多年的Glide3D接口灰飞烟灭。微软在退出OpenGL组织之后,Direct3D也以迅雷不及掩耳之势成为3D接口的绝对主流。对于显示芯片厂商和游戏厂商而言,遵循DirectXAPI已经成为默认的一道死命令,而如今我们更是进入了DirectX 10时代。

 

1.     DirectX——硬件厂商的竞技舞台

 

DirectX普及之前,大多数的游戏都是在DOS下开发的,因为DOS可以直接访问硬件,开发人员几乎无需考虑各种硬件平台对游戏的兼容性。但是Windows将很多系统的底层访问权限都保护起来,一时间,很多开发人员都难以适应。微软清醒地意识到,如果不能全面打开Windows下的娱乐市场,那么Windows始终取代不了经典的DOS。为此,他们提出了HALHardware Abstraction Layer,硬件提取)和HELHardware Emulation Layer,硬件模拟)两项标准。

 

硬件提取可以让开发人员在编程时丝毫不用考虑硬件的特性,因为它实现了各种硬件的基本接口,真正做到了硬件平台无关性。这点是非常重要的,与目前很热门的 JAVA语言有异曲同工之妙。其实在HAL之前,微软也曾提倡过GDIMCI,但是相对而言HAL无疑更加先进,让人容易接受。HEL的硬件模拟功能让Windows下的游戏跨上了一个新台阶,因为即使我们没有3D加速卡,也可以用过模拟的方式来实现伪3D,这可比平淡无奇的2D画面要好看多了。

 

以目前的眼光来看,似乎HALDEL都没什么大不了,但是它们确确实实地帮助DirectX站稳脚跟,为以后的蓬勃发展打下坚实的基础。当然仅仅有这些还是远远不够的,随后的DirectX中,微软更是掌握了硬件厂商的命脉。3DFX的倒下固然有nVIDIA崛起的因素,但是另外一大因素应该是3DFX与微软的对立。众所周知,Glide3D3DFX引以为傲的3D加速接口,当时的确比微软的Direct3D要先进不少。但是由于3DFX死抱着专利,不肯全面开放,因此引起了微软强烈的不满。呵呵,想想Netscape吧,3DFX和他的下场一样。当时大家都说Lunix性能怎么怎么好,因为Voodoo2在这款操作系统略诵蠶uake3Windows下快很多。但是大家有没有想过,这到底是为什么?难道是庞大的Windows还不如Lunix吗?绝对不是。从3DFX倒闭后状告Microsoft后,我们才知道,原来微软在DirectX中对3DFX动了手脚。其实我说这些无非是想让大家重视DirectX,因为任何游戏相关的硬件厂商要是被微软抛弃,那么其后果是不堪设想的。

 

回顾历代DirectX API

 

DirectX经历了多个版本,从最早的DirectX到最新的DirectX 10,每一个版本的出现都会导致一大批支持该新版本DirectX的新游戏出现。但是真正让DirectX开始引人瞩目的版本是6.0,这也是3D游戏真正进入发展高峰的时期。

 

1.     DirectX 6.0时代

 

当时主要代表显卡是nVIDIARiva TNT系列以及3DFXVoodoo3系列。DirectX 6.0的特色在于可以渲染出高分辨率下的32位色的3D效果,这也是当时GPU所最为追求的功能。然而坚持采用16位色彩渲染并且排斥AGP总线技术的Voodoo3系列败下阵来,而nVIDIA一开始就使用先进的AGP总线结构与32位色彩渲染,高规格与新技术奠定新的王朝。

 

除了高分辨率渲染,DirectX 6.0的另外一大特色便是支持标准纹理压缩算法,微软公司从S3公司(先已经被VIA收购)取得S3TC授权并将其加入DirectX 6.0。对于当时的3D游戏而言,如何提纹理效果是一件很头疼的事情,因为与之相配套的3D显卡在性能上无法满足大量纹理的需求,此时使用压缩技术自然是一条捷径

 

2.     DirectX 7.0时代

 

DirectX 7.0的发布又一次把显卡市场进行重新整合,DirectX 7.0最大的特色就是支持T&L,中文名称是坐标转换和光源,这也成就了nVIDIA GeForce 256ATI Radeon 256的辉煌,令3DFX彻底退出市场竞争。换句话说,拥有T&L的显卡,在配合使用DirectX 7.0之后,即使没有高速的CPU,同样获得相对流畅的速度表现。但是,直到今日,部分集成显卡还是没有硬件T&L单元,完全依靠CPU来模拟。

 

3.     DirectX 8.0时代

 

DirectX 8.0又一次引领了一场显卡革命,它首次引入了像素渲染概念,同时具备顶点渲染引擎Vertex Shader与顶点渲染引擎Pixel Shader,反映在特效上就是动态光影效果。通过Vertex ShaderPixel Shader的渲染,可以很容易的营造出真实的水面动态波纹光影效果,从而令3D游戏画面质量得到史无前例的提高。然而DirectX 8.0的普及之路并不顺畅,这与巨大的成本压力有着很大关系。nVIDIAGeforce3 Ti系列迟迟未能在主流市场普及,而后续升级到DirectX 8.1Geforce4 Ti4200以及Radeon 8500系列也在成本上差强人意。从2001年年初发布DirectX 8.0开始,这项技术直到2003年年末才得到普及!

 

4.     DirectX 9.0时代

 

其主要特色在于提升了Vertex ShaderPixel Shader的版本,从而展现出更为强大的性能。DirectX 9.0中还包含了NURBSDisplacement Mapping(置换式贴图)这两项关键的技术。NURBS3Dmax中是很常见的,但是运用到3D游戏后,我们所看到的画面将更加接近真实。简单地说,NURBS就是专门做曲面物体的一种造型方法,可以用它做出各种复杂的曲面造型和表现特殊的效果,如人的皮肤,面貌或流线型的跑车等。而Displacement Mapping技术借助在平面的多边形上加上一些数据,可以帮材质加上深浅高低的轮廓视觉效果。总体而言,DirectX9.0是对于DirectX 8.1版本的补充,出现这一现象是因为3D显卡技术的发展滞后于DirectX接口。

 

从技术角度来看,DirectX 9.0c相对于DirectX 9.0b还是有着很多的变化,不过Microsoft对于版本提升相当谨慎,因此很多用户都将DirectX 9.0c称作为准DirectX 10。在DirectX 9.0c架构中,最终要的改进便是引入3.0版本的Pixel/Vertex Shader,并且支持ATI3Dc纹理压缩技术和nVIDIA主导的HDR技术。

 

惊人的巨变:解析DirectX 10

 

1.     继续加强Shader功能

 

很多用户都在抱怨3D游戏中的画面总是难以呈现出如同电影般的渲染效果,而此时的罪魁祸首不仅仅是显卡和CPU,本身的渲染方式也是造成低效率的重要原因。在DirectX 10时代,所有的显卡GPU管线将会被赋予更加完善的Shader功能运算。以我们最近经常看到的ShaderModel 3.0为例,这仅仅在部分场景才能展现出效果,游戏开发商也不敢大量应用。而当Direct X10要求所有的GPU管线加上丰富的Shader功能运算之后,所谓的Shader将不再是显卡的一些特殊功能,而是一项基本功能,而且贴图效果也将得到极大的改善。

 

毫无疑问,这将令市场上所有遵循DirectX 10 API标准而设计的显卡甚至集成显卡有着强大的Shader运算能力。一旦拥有如此强大的群众基础,游戏开发商也就敢于大量使用这些3D特效。与此同时,微软还增加的DirectX的可编程语法结构,令各种特效的运用更加简易实现,这对于提高3D游戏画面效果将会有巨大的共享。除此以外,Direct X10还支持Shader Model 4.0,意味著它的渲染效果将会进一步提升。事实上,DirectX 10对于画质方面的其它贡献也有不少,其中“Geometry Shader”(几何着色)便是最显著的一点。通过引入新的渲染模型,开发人员可以利用整体多边形渲染加速图形运算,新着色模式将大幅提高很多3D立体作图功能效率,还将允许GPU独立于CPU外完成数据循环工作,使系统完全脱离CPU束缚。

 

2.     微软推行统一渲染架构

 

对于微软这样的业界巨头而言,掌握应用接口是头等大事。当年,并不听话3DFX在推行Glide3D接口方面一意孤行,接过被微软所倡导的Direct3D接口彻底取代。即便是强大的OpenGL组织,微软也可以以退出并力推Direct3D来正面对抗,并且在民用市场取得压倒性的优势。而现在,DirectX 10显然也希望结束DirectX 9时代的尴尬。

 

微软在DirectX 9中引入的了2.0/2.X/3.0三个版本的Vertex Shader(顶点着色引擎)以及Pixel Shader(像素着色引擎)。这看似是技术的推进,其实是微软在为nVIDIAATI两强搭建竞争舞台,而且其中的内耗直接导致技术普及速度减缓,并且利用率降低,更令软件开发商畏首畏尾。而进入DirectX 10时代之后,微软渴望使用统一渲染架构来引领群雄。

 

所谓统一渲染架构,大家可以直观地理解为将Vertex ShaderPixel Shader以及DirectX 10所引入的GeometryShader统一封装。此时,显卡中的GPU将不会开辟独立的管线,而是所有的运算单元都可以任意处理任何一种Shader运算。譬如,在《上古卷轴4埋没》这款游戏中,对于Vertex Shader的要求非常高,而此时大量显卡的Pixel Shader处于闲置状态,Vertex Shader又不堪重负。在微软的统一渲染架构下,既然所有的运算单元都可以处理任何一种运算,那么就能有效避免这种不合理的分配现象。

 

可是,统一渲染架构真的要普及还为时尚早。一方面,nVIDIA并不买账,而ATI也对此不感冒。此外,即便是微软今后强迫普及统一渲染架构,这也需要显卡GPU厂商进行新的研发。目前主流GPU都已经在两年前进入研发阶段,所以采用统一渲染架构几乎是不可能的,甚至连DirectX 10的执行效率都无法得到保障。当然,我们并非否认微软统一渲染架构的技术领先性,而是得客观承认当前的现状。

 

3.     理解流水线真正概念:PixelShader+TMU+ROP

 

在讨论显卡GPU的流水线之前,我们想先让大家了解一下3D游戏的制作过程,这对于理解后续的流水线概念将有很大的帮助。事实上,3D游戏初期的开发就好象一部电影:游戏策划、剧本撰写、角色圈定等等,在确定主角的造型风格之后,制作厂商将把原画交给3D建模部门。至此,3D工作正式开始,此时需要处理纹理,后期混合等等,具体的工作内容就是构造顶点、几何变换(Transform)、光照(Lighting)、设定(Setup)、光栅化(Rasterize)等。

 

对于传统的图形芯片,以上的一些工作全部由CPU代为执行。到了3D时代,GPU作为图形处理单元开始承担更多的工作,因此我们也开始接触纹理贴图、像素渲染等概念。然而时至今日,GPU已经发展得更为全面,其所谓的流水线作为一个完全的处理单元而存在,几乎每一款GPU都内置了多个流水线。

 

不过值得指出的是,不同时代对于流水线的定义完全不相同。如今我们对于一条流水线定义是“PixelShader(像素着色器)+TMU(纹理单元)+ROP(光栅化引擎,ATI将其称为Render Back End)。从功能上简单的说,Pixel Shader完成像素处理,TMU负责纹理渲染,而ROP则负责像素的最终输出,因此,一条完整的传统流水线意味着在一个时钟周期完成1Pixel Shader运算,输出1个纹理和1个像素。以GeForce 6600LE为例,一块传统的4流水线构架显卡(4X1)在一个时钟周期内完成4Pixel Shader运算,输出4个纹理和4个像素。

 

3D游戏工作时,其实Pixel ShaderTMU以及ROP部分都非常重要。让我们回想一下当年《FIFA98》等老一代3D游戏,当时三角形生成能力是最为看重的,基本没有应用到纹理贴图与像素着色,真正的工作部分是被成为顶点生成器的单元,而且也可以由CPU来模拟执行。但是发展到DirectX 6DirectX 7时期,大量3D游戏开始追求更加丰富真实的表面效果,此时贴图技术则迅速普及,如何提供强大的纹理填充率成为关键。至于DirectX8之后的时代,像素处理则异军突起并且展现出令人惊艳的画质。相对而言,ROP的概念比较难理解,这实际上是像素结果输出处理器负责像素的最终输出,执行像素读/写操作、Z-buffer检查、色彩混合、抗锯齿操作等。

 

4.     DirectX 10核心:追求像素渲染

 

进入DirectX 9时代以后,PixelShader技术开始应用得十分普遍,此时显卡能否提供更多的像素渲染管线成为关键因素。当然,造成GPU开始追求更多像素渲染管线的因素绝不仅仅是3D游戏普及化应用Pixel ShaderPixel Shader本身版本的提升也是一个重要原因。单流水线内置一条像素渲染管线在DirectX8游戏横行的时代是比较合理的,因为DirectX8Pixel Shader1.3允许的着色器程序比较短,此时单流水线内的多个像素渲染管线无法发挥并行工作的优势。然而DirectX9时代的Pixel Shader 2.0/3.0则全然不同,更长的着色器程序指令让多个像素渲染管线有了用武之地。

 

当然,我们也并非单纯否定TMU纹理填充单元的作用。但是也应该清楚地意识到,随着纹理压缩以及Z缓存技术的不断成熟,再加上显存带宽越来越出色,TMU逐渐摆脱了性能瓶颈,此时自然也就无需在单流水线中集成多个TMU单元。而与此同时,ROP也在数量上足以满足GPU的需求,因此也没有随着像素渲染管线数量的递增而不断增长。

 

按照ATInVIDIA对于未来3D游戏技术的预测,今后像素渲染将会越来越得到重用。在2001年刚刚出现具备像素着色器的显卡时,当时游戏的像素着色器程序中算术指令和纹理指令数量的比例在1:1左右,打这以后,算术指令的数量呈显著增加之势。在2007年,游戏中每个像素的平均着色器程序指令数目是30条,算术指令和纹理指令数量平均比率达到了5:1,也就是说现在的像素着色器程序中,平均每5条算术指令才会出现一条贴图指令,而这样的算术指令数量急剧增长趋势仍将继续保持下去。

 

写在最后:DirectX 10最终受益者是谁?

 

DirectX已经成为3D技术竞争的舞台,任何一项先进的硬件技术都必须在DirectX API的支持下才能发挥威力。从未来的发展趋势来看,伴随着DirectX的成熟,3D游戏对于硬件的利用效果将会很快提高,届时真正的电影级游戏效果或许就真的离我们不远了。在整个DirectX10时代,其实并没有哪一个受害方,因为即便是nVIDIAATI,不断的产品更新依然会给他们带来巨大的利润,而Microsoft永远是干着保赚不赔的大买卖,让Windows Vista的强势地位更加巩固。对于消费者而言,DirectX 10时代将会看到更加出色的3D渲染效果,只不过我们又得升级显卡了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。     本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题(详情请参见我的博客《运行游戏时出现0xc000007b错误的解决方法》)。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。     本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。     本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。     本程序的V3.8版分为标准版、增强版以及在线修复版。所有版本都支持修复DirectX的功能,而增强版则额外支持修复c++的功能。在线修复版功能与标准版相同,但其所需的数据包需要在修复时自动下载。各个版本之间,主程序完全相同,只是其配套使用的数据包不同。因此,标准版和在线修复版可以通过补全扩展包的形式成为增强版。本程序自V3.5版起,自带扩展功能。只要在主界面的“工具”菜单下打开“选项”对话框,找到“扩展”标签,点击其中的“开始扩展”按钮即可。扩展过程需要Internet连接,扩展成功后新的数据包可自动生效。扩展用时根据网络速度不同而不同,最快仅需数秒,最慢需要数分钟,烦请耐心等待。     本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。     程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。除常规修复外,新版程序还支持C++强力修复功能。当常规修复无效时,可以到本程序的选项界面内开启强力修复功能,可大幅提高修复成功率。请注意,此功能为试验性功能,请仅在常规修复无效时再使用。     程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。     新版程序支持命令行运行模式。在命令行中调用本程序,可以在路径后直接添加命令进行相应的设置。常见的命令有7类,分别是设置语言的命令、设置窗口模式的命令,设置安全级别的命令、开启强力修复的命令、设置c++修复模式的命令、控制DirectDraw的命令、显示版权信息的命令。具体命令名称可以通过“/help”或“/?”进行查询。     程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。     本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。     程序的“选项”对话框中包含了6项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“扩展”选项卡可以将任意版本的程序扩展成增强版。点击“DirectX版本”选项卡,可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。点击“实验室”选项卡可以开启实验功能:C++强力修复功能,通过全新的代码设计,彻底改善对于顽固异常文件的处理,极大提高修复成功率。API Sets强力修复功能,参照了DirectX文件的精细修复方式,极大地改善了修复失败的情况。修复失败时启用调试模式功能,可以在出现问题时分析错误原因。     新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。     本程序的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XP、Windows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7及后续用户,可以直接运行本程序。     同时鉴于Windows 8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中默认未包含.NET Framework 2.0,因此新版的程序文件夹内将包含一个DirectX_Repair_win8_win10的特别版程序,该程序功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。     本程序的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388所有的更新以及技术支持都可以到该博客上找到。 --------------------- 作者:VBcom 来源:CSDN 原文:https://blog.csdn.net/vbcom/article/details/7245186 版权声明:本文为博主原创文章,转载请附上博文链接!
DirectX是由微软公司开发的一款多媒体应用程序接口,用于在Windows操作系统上的游戏和多媒体应用程序中提供高性能的图形和音频功能。 通常情况下,安装DirectX是为了确保系统能够正确地支持和运行使用DirectX开发的游戏和多媒体应用程序。然而,有时候我们需要在不安装DirectX的情况下进行游戏或者运行某些需要DirectX支持的应用程序。 为了实现DirectX免安装,我们可以下载并使用DirectX的离线安装包。这些离线安装包包含了完整的DirectX程序库和组件,可以直接在没有安装DirectX的系统上运行。 首先,我们需要在微软官方网站或者其他可靠的下载平台上找到适用于我们系统的DirectX离线安装包,然后将其下载到本地。 接下来,我们解压下载的离线安装包,并运行其中的安装程序。在安装过程中,我们可以选择安装DirectX的组件和功能,也可以按照安装程序的提示进行操作。 安装完成后,我们的系统就会拥有一个独立的DirectX环境,可以直接运行那些需要DirectX支持的游戏和应用程序,而无需事先安装DirectX。 需要注意的是,尽管DirectX离线安装包可以帮助我们在没有安装DirectX的情况下使用相关的游戏和应用程序,但由于其不会自动更新,我们仍然需要定期下载并安装最新版本的DirectX来确保获得最佳的性能和兼容性。 总之,通过下载和使用DirectX的离线安装包,我们可以在不安装DirectX的情况下实现对直接X支持的游戏和应用程序的运行。这是一种便捷的方式,但需要注意更新最新版本以获得更好的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值