directx 9.0
DirectX 9。0浅谈
前言
2002年7月18日,ATI公司发布其新一代图形显示核心,完全支持微软公司下一代DirectX 9。0。
2002年11月19日,nVIDIA公司正式宣布推出基于nVIDIA CineFX架构的GeForce FX图形芯片,完全支持DirectX 9。
同年12月21日,微软正式发布其下视窗系统应用程序接口的新版本——DirectX 9。0。
什么是DirectX 9。0
DirectX 9。0,简称DX9,是微软Windows操作系统的应用程序接口(API)的下一代版本,其设计初衷是为了最大限度地发挥最新PC硬件多媒体应用的性能。 DX...全部
DirectX 9。0浅谈
前言
2002年7月18日,ATI公司发布其新一代图形显示核心,完全支持微软公司下一代DirectX 9。0。
2002年11月19日,nVIDIA公司正式宣布推出基于nVIDIA CineFX架构的GeForce FX图形芯片,完全支持DirectX 9。
同年12月21日,微软正式发布其下视窗系统应用程序接口的新版本——DirectX 9。0。
什么是DirectX 9。0
DirectX 9。0,简称DX9,是微软Windows操作系统的应用程序接口(API)的下一代版本,其设计初衷是为了最大限度地发挥最新PC硬件多媒体应用的性能。
DX9中具有最重大意义的是其3D图像方面的革新,而3D领域正是当前计算机技术中变革最快速的地方。这些创新性的技术被设计为能够为3D游戏和其他交互式应用带来电影般高质量的效果和照片般真实的画面。
DirectX 9。0能带来什么
3D图像设计一直以来的目标,就是在交互式应用的每一帧中展现同样锐利的影像级的图像效果。实现这个目标的一个方法就是赋予设计师们直接将影像级别的图形效果导入至3D游戏和应用中,而DX9就是设计用来在配备有最新图形硬件的系统上最大限度的利用系统这方面的能力。
当前的图像画面看上去已经很真实了,但总是因为某些方面的欠缺而使得图像看上去像是“电脑绘制”的。DX9中将会有许多新的特性专注于改变这种不和谐,而在为我们带来照片般真实图像的道路上跨出一大步。
DirectX 9。0提供了绝无仅有的优越图形技术。微软公司的 Ted Hase 这样说,“开发者将发现,DirectX 9。0有极其强大的能力,它使得多媒体内容的创建更简单、表现力更丰富、应用更坚固。
”
Vertex Shader 2。0和Pixel Shader 2。0
shader是一些用以决定如何去渲染一个3D物体的小程序。在DirectX中有两种shader,Vertex Shader和Pixel Shader。
Vertex Shader被用来描述和修饰3D物体的几何形状,同时也用来控制光亮和阴影;Pixel Shader则用来操纵物体表面的色彩和外观。DX9采用了2。0版的Vertex Shader和Pixel Shader。
Vertex Shader 2。0
新的流控制指令容许Vertex Shader包含循环语句和子程序。这些标准高级语言(如C语言)所具有的一般指令,使得Vertex Shader编程的效率得到强化而且过程变得更加容易。
举个例子,计算某些3D场景中的光源是Vertex Shader的一个经常用途,而基于2。0版本的Vertex Shader,开发人员能够仅用一条普通的光源shader通过调用子程序来产生具有不同的自定义色彩、形状、位置的任意数量的光源效果。
DirectX Vertex Shader语言的第一版将shader语句限制在最多128条的范围内,而在第二版中,每个Vertex Shader程序可以拥有成百上千条指令,增加的指令带来更加复杂和强大的表现。
新的操作如正弦、余弦及其他强大的函数运算大大简化了shader代码的编写,并且能够表现更加复杂的效果,例如即时演算的流体模拟等。
Pixel Shader 2。0
强大的可编程Pixel Shader是得以实现具有真实照片和电影质量级别效果的真正精华所在。
前一版的Pixel Shader语言被限制为只能使用最多6个材质和28条指令,而DX9中的Pixel Shader 2。0版,则将这一上限提升至最大16材质和160条指令,因而容许编写比以往更加复杂的shader程序。
类似于2。0版的Vertex Shader,Pixel Shader 2。0也新增了很多强化的运算和操作,使得编写工作更加轻松和高效。例如,2。0版的Pixel Shader能够使用压缩过的凹凸贴图--比标准的凹凸贴图占用更少的内存,这意味着我们能够不受限制地在游戏中使用更多细致的凹凸贴图效果。
注:凹凸贴图(Bump Map)是一种在3D场景中模拟粗糙外表面的技术,它将深度的变化保存到一张贴图中,然后再对3D模型进行标准的混合贴图处理,即可方便地得到具有凹凸感的表面效果。
Pixel Shader的早期版本的另一限制在于,一次只能进行一个色彩值的输出。
DX9中对此进行了改进,通过一个Pixel Shader程序,我们能够一次输出高达4个各自独立的色彩。这项技术具有许多有价值的应用,一个例子就是在即时演算的3D场景中使用image filtering或者post-processing处理(图像过滤或者后曲线处理)。
浮点型彩色和增强的32-bit帧缓冲格式
目前多数的色彩应用使用各8-bit长的整数来表达红、绿和篮色,这意味着每一原色的取值从0到255。由于整型数不具有小数部分,因此当它们经过Pixel Shader中极其复杂的数学运算后,这个缺陷将会导致非常明显的颜色失真。
DX9支持数种新的浮点型颜色格式,相较整形的颜色格式其精确度具有极大的提高。
常用的32-bit真彩格式包含各256级红、绿和蓝三原色,用以还原所有人眼可以分辩的真实色彩。然而这种格式只能提供256级不同的亮度表现,但是人眼却可以分辩数百万种不同层次的亮度。
DX9提供新的精确至32-bit每像素的帧缓冲格式,能够表现出高达4倍于所有亮度等级的数量。
亮度等级范围的提升使得人们对数量大增的亮度等级会有完全不同的感觉。如果亮度级别的数量太少,图像看上去要么曝光过度,要么曝光不足,而亮度等级更精确的图像则看上去感觉更加柔和自然。
位移贴图和连续镶嵌技术
DirectX 8。0开始引入了一种被称为N-patch的新的3D表面技术,该技术能够通过较少的多边形构造出看上去很圆而且感觉自然的块状物体。ATI具备TRUFORM技术的显示芯片第一次使用到了这项技术。
DX9中扩展了N-patch技术的概念,使得其更加强大。相较于仅仅对存在的几何图形进行平滑处理,位移贴图技术能够添加更多复杂的细节到一个物体上。不同于凹凸贴图,位移贴图技术精确地描述了物体的外形,使得其光线反射和阴影投射的效果更加真实。
连续镶嵌技术(continuous tessellation)是N-patch的另一项强化,它能够在互相镶嵌的层间平滑地定义尺度。
Gamma修正
Gamma修正可让研发者提升视觉感受,并获得更好的材质光影效果。
有些硬件产品中已经有这项功能,大多是相当高阶的产品,但现在它们正逐渐成为主流。DirectX 9。0将促使这些高端产品进一步平民化。
正如您所见,DX9对3D图形技术的每个方面都作出了巨大的改良,将成为促进下一代3D应用诞生的催化剂。
在音频方面DirectX9。0加入了DirectMP3、DirectCD两个新的功能单元。DirectMP3支持MP3文件或者音频流的直接调用和解码回放,无需通过Windows API界面调用专门的MP3播放程序。
DirectCD支持CD音频在各种需要的情况下直接调用和进行混音回放,无需通过Windows API界面,DirectCD将使CD音频和Directx9及其调用程序更好地结合在一起。 。收起