一 : 全面透析微软DirectX9
[前言]
如果你要问我,这三年是什么在推动PC多媒体技术的飞速发展?那我说——是DirectX!火热的3D图形卡市场激烈的竞争是在追随着谁的脚步?——也是DirectX!
2002年12月21号,微软终于发布了大家期待已久的DirectX 9.0。DirectX 9.0是DirectX的最新版本。以往每次DirectX版本的更新后,总要到等上大半年甚至一年多的时间才会有相应的游戏和硬件支持;但这次不同,众多大型的游戏开发商一早就放出消息,各款新版本的游戏都是基于DirectX 9开发。在显卡图形处理芯片方面,当DirectX 9还在扑朔迷离的的开发阶段,拼足了劲的ATi在7月17号就率先发布了在硬件架构完全支持DirectX 9的R300 VPU。这款深具革命性的视觉处理器不仅PC图形工业发展史上为ATi书下最辉煌的一页,也第一次确定了ATi在技术和性能上的领导地位。紧随其后,11月19日,nVIDIA在FALL COMDEX 2002—LAS VEGAS发布了支持DirectX 9的新产品Geforce FX(NV30)。
DirectX是什么?DirectX是一个用于多媒体应用程序和硬件增强的编程环境,它是微软为了将其Windows建设成适应各种多媒体的最好平台而开发设计的。DirectX目前已经成为微软自身SDK的一部分,而Windows 98/2000/XP内则集成了DirectX,表明它已成为操作系统的一部分。
DirectX是什么?它是一个API(Application Programming Interface)即“应用程序接口”,它是一座桥梁,连接硬件、程序员和软件用户的桥梁。每个DirectX部件都是用户可调用的API的总和,通过它应用程序可以直接访问计算机的硬件。这样,应用程序就可以利用硬件加速器(Hardware Accelerator)。如果硬件加速器不能使用,DirectX还可以仿真加速器以提供强大的多媒体环境。
为了理解DirectX,我们可以把系统分为四层:
●硬件/网络层:放置有多媒体设备,包括图形加速器、声卡、输入设备以及网络通信设备等;
●DirectX基础层:为图像、声音和设备提供多媒体基本服务;
●DirectX媒体层:为动画制作、音频和视频等提供API功能;
●组件层:包括ActiveX控制和应用,它利用DirectX的API功能的优势为用户提供多媒体服务。
微软开发了DirectX标准平台,并且根据硬件制造厂商和游戏厂商合作共同更新升级DirectX的标准。硬件制造商按照此标准研发制造更好的产品,游戏程序员根据这套标准开发游戏。也就是说,无论硬件是否支持某特殊效果,只要DirectX标准中有,写游戏的程序员就可以把它写到游戏中,当这个游戏在硬件上运行,如果此硬件根据DirectX标准把这个效果做到了此硬件驱动程序中,驱动程序驾驭其硬件算出此效果,用户就可以欣赏到此效果。这就是“硬件设备无关性”,是DirectX真正意义所在。
在DirectX出现之前,硬件制造厂商设计出一个全新的多媒体产品之后,必须要考虑到它可以搭配其它的硬件设备一起使用,所以在编写驱动程序的时候就要对市面上林林总总的各式硬件产品进行全面的汇总调查,然后再将这些硬件特性与自己的产品融合到一起,因此编写一个驱动程序非常的麻烦,而且没准在使用的时候还是会出现硬件不兼容的情况。但是DirectX的出现就彻底改变了这一局面,因为它拥有一个HAL(Hardware Abstraction Layer,硬件提取)功能,简单的说就是可以直接让游戏、软件程序和硬件来进行数据传输,从而改
变了硬件之间兼容性的问题。
在深入了解Directx 9以前,重温DirectX的发展史,会有助于我们形象的了解Directx 9的新特性。
[起源、发展]
DirectX的创意并非来自于Bill Gates,它最初是微软的工程师为了方便玩游戏而编制的程序,但Bill Gates却敏锐的捕捉到了DirectX的发展前景,并果断的投入了巨大的财力进行研发——这终将Windows造就成为有史以来最有生命力的游戏平台。
DirectX,与Internet Explorer同样被Microsoft捆绑到Windows系统中的部件,却有着与之迥然不同的命运,后者命运多桀,常常官司缠身,甚至差点被扫地出门,前者则一路过关斩将,先灭了风头正旺的Glide,后又将老牌的OpenGL甩到身后,大有一呼百应之势。 微软公司在他们发行的各个视窗操作系统里,几乎都附带DirectX程序,从Windows 95开始,人们就开始接触Direct X 2.0,Windows NT4.0里面则是DirectX 3.0a,到Windows 98时代,Direct的版本则升级到了 5.0 ,Windows 98 Second Edition 则附带了 DirectX 6.1a,Windows 2000 原配则是DirectX 7.0,Windows XP 家庭版/专业版都将使用当前的 DirectX
8.1。微软的DirectX随着全世界PC飘扬着的“Windows”旗帜逐渐统治了整个3D游戏世界。据说DirectX还将推出MAC版本,以后Apple机中也可以看到绚丽的3D色彩。
DirectX与游戏始终是密不可分的,《红色警戒》在成为即时战略游戏的经典时,也把DirectX 2.0带到了我们的身边。2.0最大的改善是在Direct Draw。
负责2D绘图的Direct Draw发展到了DirectX 3.0就已近极致,在跳过DirectX 4以后,Directx的重心开始转向Direct3D。
在DirectX5.0发布不久第二代3D显示卡问世了,这一代3D显示卡借助DirectX6.0的技术争得不可开交。这一代的显示卡主要有:Nvidia的Riva TNT,并连(SLI)的VooDoo2,VooDoo3。到了这个时代,市场格局已经很清晰,这是NVidia与3DFX的战争。DirectX 6的3D效果更多了,而且借助硬件的强大性能,可以渲染出高分辨率下的32位色的3D效果,这一点,采用PCI总线技术的VooDoo系列败下阵来,它只能支持800x600下的16位色渲染,尽管他的800x600x16的效果不比TNT的1024x768x32效果差,但终未被公信。DirectX 6开始把3Dfx送进了坟墓。Nvidia则借机奠定了他显卡老大的基础。
DirectX7又一次把显卡市场进行重新整合,DirectX7最大的特色就是支持T&L,中文名称是“坐标转换和光源”。此功能为显示卡GPU与CPU之争起着关键作用。3D游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上灯光的3D渲染是最消耗资源的。在T&L问世之前,位置转换和灯光都需要CPU来计算,CPU速度越快,游戏表现越流畅。使用了T&L功能后,这两种效果的计算用显示卡的GPU(可以理解为显示CPU)来计算,这样就可以把CPU从繁忙的劳动中解脱出来,让CPU做他该作的事情,比如逻辑运算、数据计算等等。换句话说,拥有T&L显示卡,使用DirectX7,即使没有高速的CPU,同样能能流畅的跑3D游戏。T&L成为当时人们关注的焦点。第一个支持T&L功能的显示卡是Nvidia的Geforce 256,它第一次把GPU的概念带入我们的PC。
2000年11月9日,微软发布的DirectX 8.0对GPU运算进行了大刀阔斧的改革,特别是3D渲染流水线和以前的Direct 3D 和Direct Draw单元。DirectX Graphics 的一个最显著
的变化是将 DirectDraw(二维图形接口)和 Direct3D(三维图形接口)合并为一个公用接口。Direct 3D和Direct Draw实际是两个DLL函数,Direct Draw负责图形卡的2D运算,而Direct3D主要负责3D场景运算。在DirectX 7下, DirectDraw 和 Direct3D 一直相互交叉,因此,将它们划分为两个独立的接口越来越不适应发展。新的集成简化了 Direct3D 核心的初始化和控制,使这些操作更加简单。这种变化不仅简便了应用程序的初始化,而且改进了数据分配和管理的性能,从而减少了内存的占用。合并接口的另一个原因是 DirectDraw 的开发几乎完全停止了,在 DirectX 6.0 和 DirectX 7.0 中对它所作的修改仅仅是稍作美化而已。
DirectX 8在传统3D图形处理流水线中的两个地方进行了改进,增加了“可编程”特性:CPU顶点数据---〉Vertex Shader、T&L引擎---〉裁减/三角形设置/光栅化---〉Pixel Shader、多纹理混合处理---〉雾混合---〉透明度/模板和深度测试---〉帧缓冲
上面就是DirectX 8可编程3D图形处理流水线的示意图。与过去的处理方式相比,DirectX 8对两个部分进行了改进:一个可编程的Vertex Shader(顶点着色引擎)代替了过去的几何变换和光源处理(T&L)引擎;而可编程的Pixel Shader(像素着色引擎)则加入了过去的纹理处理流水线。
DirectX8.1可以说是DirectX8.0的最新升级版,它进一步升级了Vertex Shader与Pixel Shader的版本,Pixel Shader(像素着色引擎)由1.0升级到了1.4。
在现今大量的DirectX 8游戏上市之前,3Dmark2001率先为我们展示了DirectX 8带来的令人瞠目结舌的画面效果如水面动态波纹光影效果,也借机奠定它在D3D测试领域的权威。DirectX 8硬件则依然是由nVIDIA的Geforce3、4主宰,但ATi凭借着8500,开始成为唯一能与nVIDIA抗衡的力量。
[体验、应用]
DirectX无疑是一个非常有趣的API。DirectX每一次升级都会有重大的内核结构改变,都给我们带来巨大的视觉冲击。在DirectX的研发上,Microsoft毫不保守,比如曾经是DirectX7核心的T&L引擎到DirectX9干脆被抛弃了。因此对于图形芯片开发商、游戏开发商以及我们玩家而言,DirectX 9.0的确是一项“绝无仅有的优越图形技术”。DirectX 9.0“具有多项令人兴奋的全新功能特征”,通过和相关硬件的配合,DirectX9用户可获得更好的图像显示质量,更棒的音效效果,更好的多人联网游戏效果。
体验首先你要升级你系统的DirectX到9.0版本,微软DirectX 9.0完全安装版(For Win9x/ME/2000/XP)的下载链接为:。 安装完毕,重新启动后,进入C:\Program Files\directx\setup,打开DxDiag就可以运行DirectX诊断工具。
如果你的机器出了问题,好端端的机器,突然不能用Direct 3D硬件加速,在很多支持Direct 3D的游戏中只能用软件加速,那么DirectX功能中的:Direct3D加速和AGP纹理多半不可用,点击测试Direct3D,可以测试一下你的DirectX3D功能是否正常。如果无法运行,那么尝试一下重新安装DirectX,升级显卡驱动,扫描修复注册表错误,如果实在不行,那只有重新安装系统了!
DirectX诊断工具里可以进行简单的Direct3D 9的测试。
DirectX的意思不难理解,Direct是直接的意思,X是很多东西,加在一起就是一组具有共性的东西,这个共性就是“直接”。在DirectX诊断工具中,我们可以看到DirectX主要由以下几个部分组成:
1、DirectDraw(2D绘图)
2、Direct3D(3D绘图)
3、DirectSound(声音相关)
4、DirectMusic(MIDI相关)
5、DirectInput(输入相关)
6、DirectPlay(网络相关,如IP声音通讯)
7、DirectSetup(Setup相关)
8、DirectShow(动画播放)
9、DirectAnimation(整合动画环境)
DirectX 9.0新增特性有:强化了针对DirectDraw和Direct3D的接口,简化了应用扩展,提升性能;改善了图形创作工具,更易于做出最佳的3-D角色和环境;点光源式光影和像素式光影使图象更逼真;强化了DirectSound和DirectMusic,简化了其应用扩展;DLS2音频合成功能提高了乐器音频的真实感;DirectInput的设备影射功能令对设备的支持更简单;DirectPlay使多人游戏的性能和可扩展性得到了提高;DirectPlay提供了IP声音通讯;DirectShow的应用编程接口提供了音频/视频的实时合成和即时编辑;DirectShow支持
Windows媒体音频和视频(WMA和WMV)的读写;Microsoft TV技术可以支持数字电视节目。 如果你还有硬件支持DirectX 9.0的显示卡如Radeon9500以及一块强劲的“芯”,那么现在你对DirectX 9.0的认识将不再停留在理论上,已经有一些应用程序为我们带来了DirectX 9.0的体验,首当其冲的就是刚刚由FutureMark公司发布的3DMark03。
3DMark03的下载链接为: 。
3DMark03的第四项测试为Mother Nature,这个场景基于微软DirectX9.0提供的PixelShaders2.0和Vertex Shader2.0引擎,真实的模拟出了大自然的美丽景色。
NVIDIA在它的网站上http://www.61k.comview.asp?IO=game_gunmetal就发布了一个利用DirectX 9.0技术的游戏Demo:Gun Metal。Gun Metal是首个利用Cg开发的游戏之一,可以展现电影般质量的特效,将游戏的兴奋度提升到一个新的水平。Cg特效: DX9:阻塞排序,优化渲染和真实的透镜效果,DX9:使用128bit浮点缓存,可以启动更高的颜色对比和溢出。
DX9 Pixel Shader
ATi在它的网站上也已经发布了8款基于DirectX 9.0的Demo演示程序:
。
如果你是一位程序员,已经有了Microsoft DirecX9.0 SDK,那么ATi全新的DirectX 9 Beta v0.9版RenderMonkey工具套装会成为你开发DirectX 9.0游戏的得力工具。
。它的界面与Visual Studio GUI界面相近,Visual Studio程序员可以很快上手;自带Vertex和Pixel shaders编辑器,完整的支持微软shader编译器;支持各种DX8, DX9 Shader 模型(现在)和 OpenGL Shader 模型(未来)。
[DirectX 9.0、Direct3D]
Direct3D决定了三维游戏的效果,它是如此的重要,以至于它几乎成了DirectX的代名词,DirectX 9.0的主要新特性也集中在Direct3D部分。DX9中具有最重大意义的是其3D图像方面的革新,而3D领域正是当前计算机技术中变革最快速的地方。这些创新性的技术被设计为能够为3D游戏和其他交互式应用带来电影般高质量的效果和照片般真实的画面。 3D图像设计一直以来的目标,就是在交互式应用的每一帧中展现同样锐利的影像级的图像效果。实现这个目标的一个方法就是赋予设计师们直接将影像级别的图形效果导入至3D游戏和应用中,而DX9就是设计用来在配备有最新图形硬件的系统上最大限度的利用系统这方面的能力。
当前的图像画面看上去已经很真实了,但总是因为某些方面的欠缺而使得图像看上去像是“电脑绘制”的。DX9中将会有许多新的特性专注于改变这种不和谐,而在为我们带来照片般真实图像的道路上跨出一大步。
电影级的画面渲染效果已越来越成为PC三维图像的发展方向,从NV30、3Dmark03到DOOM III,我们都不难发现这一趋势。但要实现这样的效果,可编程顶点着色器和可编程象素渲染(Vertex Shader、Pixel Shader)技术将会是关键。
Vertex Shader 2.0和Pixel Shader 2.0
从DX8开始,3D图形处理技术逐渐统一在Vertex Shader和Pixel Shader。Vertex Shader被用来描述和修饰3D物体的几何形状,同时也用来控制光亮和阴影;Pixel Shader则用来操纵物体表面的色彩和外观。显卡的功能就是把这两种处理从CPU中解放出去。最新版本Shader的推出总能为我们带来更强悍的性能和更优异的画质。DX9采用了2.0版的Vertex Shader和Pixel Shader,它们都将支持64或甚至128位浮点色彩精度。浮点色彩在动态和精度上的增加给图像质量带来质的飞跃,还让很多过去不可能的特效变成现实。
Vertex Shader 2.0引入了流程控制,增加了条件跳转、循环和子程序。Vertex程序现在最多可以由1024条指令组成(之前只能用128条指令),但这只是理论上的数字,拥有循环和跳转指令自然就可以允许更多数量指令的执行。这大大加强了可编程性和效率。举个例子,计算某些3D场景中的光源是Vertex Shader的一个经常用途,在 2.0版中,开发人员能够仅用一条普通的光源Shader通过调用子程序来产生具有不同的自定义色彩、形状、位置的任意数量的光源效果。另外,增加的指令带来更加复杂和强大的表现,新的操作如正弦、余弦及其他强大的函数运算大大简化了代码的编写,并且能够表现更加复杂的效果。
强大的可编程Pixel Shader是得以实现具有真实照片和电影质量级别效果的真正精华所在。Pixel Shader 2.0可以支持高级程序语言和汇编语言,开发者还可以将其汇编代码嵌入较高级的程序语言中。前一版的Pixel Shader语言被限制为只能使用最多6个材质和28条指令,而2.0版则将这一上限提升至最大16材质和160条指令,也新增了很多强化的运算和操作(例如,2.0版的Pixel Shader能够使用压缩过的凹凸贴图--比标准的凹凸贴图占用更少的内存,这意味着我们能够不受限制地在游戏中使用更多细致的凹凸贴图效果。
注:凹凸贴图(Bump Map)是一种在3D场景中模拟粗糙外表面的技术,它将深度的变化保存到一张贴图中,然后再对3D模型进行标准的混合贴图处理,即可方便地得到具有凹凸感的表面效果。)使得编程工作更加轻松和高效。Pixel Shader的早期版本的另一限制在于一次只能进行一个色彩值的输出。多重渲染物体(Multiple Render Targets)突破了这个限
制,允许一次输出4个单独的色彩值,这将极大提高Pixel Shader程序的效率。这项技术具有许多有价值的应用,一个例子就是在即时运算的3D场景中使用图像过滤或者后曲线处理。
Vertex Shader 1.0(上)和2.0(下)
Pixel Shader1.4(上)和2.0(下)
DX8.1和DX9.0的画面效果对比
浮点型色彩和32bit帧缓冲格式
目前多数的色彩应用使用各8bit长的整型数来表达红、绿和蓝色,这意味着每一原色的取值从0~255。表面上看,目前的色彩精度对于显示而言也许是足够的,但在运算中就是另外一回事。由于整型数不具有小数部分,因此当它们经过Pixel Shader中极其复杂的数学运算后,会出现较大的偏差,这个缺陷将会导致明显的颜色失真。DX9支持数种新的浮点型颜色格式,其精确度具有极大的提高。
同时,DX9提供新的精确至每像素32bit的帧缓冲格式,能够表现出4倍于目前亮度等级的数量,而目前只能提供256级不同的亮度表现。人眼可以分辨数百万种不同层次的亮度,亮度等级范围的提升使得人们对数量大增的亮度等级会有完全不同的感觉。如果亮度级别的数量太少,图像看上去要么曝光过度,要么曝光不足,而亮度等级更精确的图像则看上去感觉更加柔和自然。
位移贴图(Displacement Mapping)
其实早在今年三月,Microsoft在GDC上就展示了DirectX 9.0的崭新魅力,而且让人非常感到意外的是,当时DX9演示的硬件平台是Matrox Parhelia显卡,而并不是传说中的nVIDIA的NV30。在演示中DirectX 9.0配合Matrox Parhelia位移贴图的软件仿真,让人大饱眼福。 具有位移贴图(Displacement Mapping)功能的3D显卡随着DirectX9的演示呈现出照片品质的效果。当应用位移贴图功能后,人物将变得非常复杂真实……
位移贴图(Displacement Mapping)
硬件位移贴图:(Hardware Displacement Mapping)。这是Matrox自己研发的技术,被微软整合进了DirectX 9,成为一个业界标准。硬件位移贴图是一种强劲而简单的3D物体实时计算的新方法。,用以演绎和绘制复杂的3D几何图形。深度适配顶点镶嵌和顶点纹理技术,加上重组基础网面与位移贴图,可以营造一个非常真实的3D图形。硬件位移贴图技术支持贝兹曲线(Bezier Curve)和N-patch表面引擎;其使用纹理贴图为动态几何图形进行顶点纹理贴图;支持细节层级(LOD)几何图形、深度适配镶嵌(Depth Adaptive Tessellation)以及高分辨率几何图形数据压缩编码。
位移贴图和凸凹贴图一样,也是改变物体表面的法向量。与凸凹贴图相比,位移贴图的优点是物体的侧面轮廓也具有凸凹不平效果。另外位移贴图可以解决凸凹贴图的阴影问题,因为凸凹贴图可能使本来平的物体扭曲。位移贴图很容易实现,因此如果这个功能获得足够的硬件支持,游戏开发人员也将支持这个功能。
位移贴图有两种类型,采样和预先图象。这两种方法是不同的。预先图象法正如其名,它的主要优势是图象是预先计算好的。这种方法速度很快,但是也有缺点。最大的缺点是无法和自适应镶嵌化和LOD同时工作。所以,我们不太可能在大的物体上看到预先图象位移贴图,例如地形,建筑物等等。
采样位移贴图提供了很多预先图象所不具备的优点,它可以和自适应镶嵌化和LOD协同工作。这对于大的物体很有帮助,例如地形。这个方法由于易用性很可能获得更多的支持。 当然,位移贴图还有一些问题。主要是应用在高阶曲面上。很多象R Patche和Patche这样的曲面,位移贴图必须由设计师小心使用。如果使用不当的话,可能会导致难看的图象问题。
Gamma修正
Gamma修正可以改善色彩表现,并获得更好的材质光影效果。有些硬件产品中已经有这项功能,大多是相当高档的产品,但现在它们正逐渐成为主流。DX9将促使这些高端产品进一步平民化。
其它
在音频方面DirectX9.0加入了DirectMP3、DirectCD两个新的功能单元。DirectMP3单元,支持MP3文件或者音频流的直接调用和解码回放,无需通过Windows API界面调用专门的MP3播放程序。DirectCD单元,支持CD音频在各种需要的情况下直接调用和进行混音回放,无需通过Windows API界面,DirectCD将使CD音频和Directx9及其调用程序更
好地结合在一起。
[展望]
DirectX 9(左)和DirectX 10(右)基本模型架构
在DirectX 8和DirectX 9中,可编程顶点着色和象素渲染,这两个单元是分开来的,也就是说,GPU生产厂家需要在GPU中划分两个区域来存放VS阵列和PS贴图流水线,那么,有没有可能把这两者整合在一起呢?有!答案就是DirectX 10!
与DirectX 10相应的,显示芯片厂商也将会推出全新设计的GPU,它们的晶体管集成度将是前所未有的。
正如您所见,DX9对3D图形技术的每个方面都作出了巨大的改良,将成为促进下一代3D应用诞生的催化剂。
可以预见,未来DirectX将带给我们更多前所未有的视听冲击!
二 : 全面透析微软DirectX9
[前言]
如果你要问我,这三年是什么在推动PC多媒体技术的飞速发展?那我说——是DirectX!火热的3D图形卡市场激烈的竞争是在追随着谁的脚步?——也是DirectX!
2002年12月21号,微软终于发布了大家期待已久的DirectX 9.0。(www.61k.com]DirectX 9.0是DirectX的最新版本。以往每次DirectX版本的更新后,总要到等上大半年甚至一年多的时间才会有相应的游戏和硬件支持;但这次不同,众多大型的游戏开发商一早就放出消息,各款新版本的游戏都是基于DirectX 9开发。在显卡图形处理芯片方面,当DirectX 9还在扑朔迷离的的开发阶段,拼足了劲的ATi在7月17号就率先发布了在硬件架构完全支持DirectX 9的R300 VPU。这款深具革命性的视觉处理器不仅PC图形工业发展史上为ATi书下最辉煌的一页,也第一次确定了ATi在技术和性能上的领导地位。紧随其后,11月19日,nVIDIA在FALL COMDEX 2002—LAS VEGAS发布了支持DirectX 9的新产品Geforce FX(NV30)。
DirectX是什么?DirectX是一个用于多媒体应用程序和硬件增强的编程环境,它是微软为了将其Windows建设成适应各种多媒体的最好平台而开发设计的。DirectX目前已经成为微软自身SDK的一部分,而Windows 98/2000/XP内则集成了DirectX,表明它已成为操作系统的一部分。
DirectX是什么?它是一个API(Application Programming Interface)即“应用程序接口”,它是一座桥梁,连接硬件、程序员和软件用户的桥梁。每个DirectX部件都是用户可调用的API的总和,通过它应用程序可以直接访问计算机的硬件。这样,应用程序就可以利用硬件加速器(Hardware Accelerator)。如果硬件加速器不能使用,DirectX还可以仿真加速器以提供强大的多媒体环境。
为了理解DirectX,我们可以把系统分为四层:
●硬件/网络层:放置有多媒体设备,包括图形加速器、声卡、输入设备以及网络通信设备等;
●DirectX基础层:为图像、声音和设备提供多媒体基本服务;
●DirectX媒体层:为动画制作、音频和视频等提供API功能;
●组件层:包括ActiveX控制和应用,它利用DirectX的API功能的优势为用户提供多媒体服务。
微软开发了DirectX标准平台,并且根据硬件制造厂商和游戏厂商合作共同更新升级DirectX的标准。硬件制造商按照此标准研发制造更好的产品,游戏程序员根据这套标准开发游戏。也就是说,无论硬件是否支持某特殊效果,只要DirectX标准中有,写游戏的程序员就可以把它写到游戏中,当这个游戏在硬件上运行,如果此硬件根据DirectX标准把这个效果做到了此硬件驱动程序中,驱动程序驾驭其硬件算出此效果,用户就可以欣赏到此效果。这就是“硬件设备无关性”,是DirectX真正意义所在。
在DirectX出现之前,硬件制造厂商设计出一个全新的多媒体产品之后,必须要考虑到它可以搭配其它的硬件设备一起使用,所以在编写驱动程序的时候就要对市面上林林总总的各式硬件产品进行全面的汇总调查,然后再将这些硬件特性与自己的产品融合到一起,因此编写一个驱动程序非常的麻烦,而且没准在使用的时候还是会出现硬件不兼容的情况。但是DirectX的出现就彻底改变了这一局面,因为它拥有一个HAL(Hardware Abstraction Layer,硬件提取)功能,简单的说就是可以直接让游戏、软件程序和硬件来进行数据传输,从而改
microsoft directx 全面透析微软DirectX9
变了硬件之间兼容性的问题。[www.61k.com)
在深入了解Directx 9以前,重温DirectX的发展史,会有助于我们形象的了解Directx 9的新特性。
[起源、发展]
2000年11月9日,微软发布的DirectX 8.0对GPU运算进行了大刀阔斧的改革,特别是3D渲染流水线和以前的Direct 3D 和Direct Draw单元。DirectX Graphics 的一个最显著
microsoft directx 全面透析微软DirectX9
的变化是将 DirectDraw(二维图形接口)和 Direct3D(三维图形接口)合并为一个公用接口。(www.61k.com]Direct 3D和Direct Draw实际是两个DLL函数,Direct Draw负责图形卡的2D运算,而Direct3D主要负责3D场景运算。在DirectX 7下, DirectDraw 和 Direct3D 一直相互交叉,因此,将它们划分为两个独立的接口越来越不适应发展。新的集成简化了 Direct3D 核心的初始化和控制,使这些操作更加简单。这种变化不仅简便了应用程序的初始化,而且改进了数据分配和管理的性能,从而减少了内存的占用。合并接口的另一个原因是 DirectDraw 的开发几乎完全停止了,在 DirectX 6.0 和 DirectX 7.0 中对它所作的修改仅仅是稍作美化而已。
DirectX 8在传统3D图形处理流水线中的两个地方进行了改进,增加了“可编程”特性:CPU顶点数据---〉Vertex Shader、T&L引擎---〉裁减/三角形设置/光栅化---〉Pixel Shader、多纹理混合处理---〉雾混合---〉透明度/模板和深度测试---〉帧缓冲
上面就是DirectX 8可编程3D图形处理流水线的示意图。与过去的处理方式相比,DirectX 8对两个部分进行了改进:一个可编程的Vertex Shader(顶点着色引擎)代替了过去的几何变换和光源处理(T&L)引擎;而可编程的Pixel Shader(像素着色引擎)则加入了过去的纹理处理流水线。
DirectX8.1可以说是DirectX8.0的最新升级版,它进一步升级了Vertex Shader与Pixel Shader的版本,Pixel Shader(像素着色引擎)由1.0升级到了1.4。
在现今大量的DirectX 8游戏上市之前,3Dmark2001率先为我们展示了DirectX 8带来的令人瞠目结舌的画面效果如水面动态波纹光影效果,也借机奠定它在D3D测试领域的权威。DirectX 8硬件则依然是由nVIDIA的Geforce3、4主宰,但ATi凭借着8500,开始成为唯一能与nVIDIA抗衡的力量。
[体验、应用]
DirectX无疑是一个非常有趣的API。DirectX每一次升级都会有重大的内核结构改变,都给我们带来巨大的视觉冲击。在DirectX的研发上,Microsoft毫不保守,比如曾经是DirectX7核心的T&L引擎到DirectX9干脆被抛弃了。因此对于图形芯片开发商、游戏开发商以及我们玩家而言,DirectX 9.0的确是一项“绝无仅有的优越图形技术”。DirectX 9.0“具有多项令人兴奋的全新功能特征”,通过和相关硬件的配合,DirectX9用户可获得更好的图像显示质量,更棒的音效效果,更好的多人联网游戏效果。
61阅读提醒您本文地址:
体验首先你要升级你系统的DirectX到9.0版本,微软DirectX 9.0完全安装版(For Win9x/ME/2000/XP)的下载链接为:。 安装完毕,重新启动后,进入C:\Program Files\directx\setup,打开DxDiag就可以运行DirectX诊断工具。
如果你的机器出了问题,好端端的机器,突然不能用Direct 3D硬件加速,在很多支持Direct 3D的游戏中只能用软件加速,那么DirectX功能中的:Direct3D加速和AGP纹理多半不可用,点击测试Direct3D,可以测试一下你的DirectX3D功能是否正常。如果无法运行,那么尝试一下重新安装DirectX,升级显卡驱动,扫描修复注册表错误,如果实在不行,那只有重新安装系统了!
DirectX诊断工具里可以进行简单的Direct3D 9的测试。
microsoft directx 全面透析微软DirectX9
DirectX的意思不难理解,Direct是直接的意思,X是很多东西,加在一起就是一组具有共性的东西,这个共性就是“直接”。(www.61k.com]在DirectX诊断工具中,我们可以看到DirectX主要由以下几个部分组成:
1、DirectDraw(2D绘图)
2、Direct3D(3D绘图)
microsoft directx 全面透析微软DirectX9
3、DirectSound(声音相关)
4、DirectMusic(MIDI相关)
5、DirectInput(输入相关)
6、DirectPlay(网络相关,如IP声音通讯)
7、DirectSetup(Setup相关)
8、DirectShow(动画播放)
9、DirectAnimation(整合动画环境)
DirectX 9.0新增特性有:强化了针对DirectDraw和Direct3D的接口,简化了应用扩展,提升性能;改善了图形创作工具,更易于做出最佳的3-D角色和环境;点光源式光影和像素式光影使图象更逼真;强化了DirectSound和DirectMusic,简化了其应用扩展;DLS2音频合成功能提高了乐器音频的真实感;DirectInput的设备影射功能令对设备的支持更简单;DirectPlay使多人游戏的性能和可扩展性得到了提高;DirectPlay提供了IP声音通讯;DirectShow的应用编程接口提供了音频/视频的实时合成和即时编辑;DirectShow支持
Windows媒体音频和视频(WMA和WMV)的读写;Microsoft TV技术可以支持数字电视节目。(www.61k.com] 如果你还有硬件支持DirectX 9.0的显示卡如Radeon9500以及一块强劲的“芯”,那么现在你对DirectX 9.0的认识将不再停留在理论上,已经有一些应用程序为我们带来了DirectX 9.0的体验,首当其冲的就是刚刚由FutureMark公司发布的3DMark03。
3DMark03的下载链接为: 。
microsoft directx 全面透析微软DirectX9
3DMark03的第四项测试为Mother Nature,这个场景基于微软DirectX9.0提供的PixelShaders2.0和Vertex Shader2.0引擎,真实的模拟出了大自然的美丽景色。(www.61k.com]
NVIDIA在它的网站上http://www.nvidia.com/view.asp?IO=game_gunmetal就发布了一个利用DirectX 9.0技术的游戏Demo:Gun Metal。Gun Metal是首个利用Cg开发的游戏之一,可以展现电影般质量的特效,将游戏的兴奋度提升到一个新的水平。Cg特效: DX9:阻塞排序,优化渲染和真实的透镜效果,DX9:使用128bit浮点缓存,可以启动更高的颜色对比和溢出。
DX9 Pixel Shader
ATi在它的网站上也已经发布了8款基于DirectX 9.0的Demo演示程序:
。
如果你是一位程序员,已经有了Microsoft DirecX9.0 SDK,那么ATi全新的DirectX 9 Beta v0.9版RenderMonkey工具套装会成为你开发DirectX 9.0游戏的得力工具。
microsoft directx 全面透析微软DirectX9
。[www.61k.com]它的界面与Visual Studio GUI界面相近,Visual Studio程序员可以很快上手;自带Vertex和Pixel shaders编辑器,完整的支持微软shader编译器;支持各种DX8, DX9 Shader 模型(现在)和 OpenGL Shader 模型(未来)。
[DirectX 9.0、Direct3D]
Direct3D决定了三维游戏的效果,它是如此的重要,以至于它几乎成了DirectX的代名词,DirectX 9.0的主要新特性也集中在Direct3D部分。DX9中具有最重大意义的是其3D图像方面的革新,而3D领域正是当前计算机技术中变革最快速的地方。这些创新性的技术被设计为能够为3D游戏和其他交互式应用带来电影般高质量的效果和照片般真实的画面。 3D图像设计一直以来的目标,就是在交互式应用的每一帧中展现同样锐利的影像级的图像效果。实现这个目标的一个方法就是赋予设计师们直接将影像级别的图形效果导入至3D游戏和应用中,而DX9就是设计用来在配备有最新图形硬件的系统上最大限度的利用系统这方面的能力。
当前的图像画面看上去已经很真实了,但总是因为某些方面的欠缺而使得图像看上去像是“电脑绘制”的。DX9中将会有许多新的特性专注于改变这种不和谐,而在为我们带来照片般真实图像的道路上跨出一大步。
电影级的画面渲染效果已越来越成为PC三维图像的发展方向,从NV30、3Dmark03到DOOM III,我们都不难发现这一趋势。但要实现这样的效果,可编程顶点着色器和可编程象素渲染(Vertex Shader、Pixel Shader)技术将会是关键。
61阅读提醒您本文地址:
Vertex Shader 2.0和Pixel Shader 2.0
从DX8开始,3D图形处理技术逐渐统一在Vertex Shader和Pixel Shader。Vertex Shader被用来描述和修饰3D物体的几何形状,同时也用来控制光亮和阴影;Pixel Shader则用来操纵物体表面的色彩和外观。显卡的功能就是把这两种处理从CPU中解放出去。最新版本Shader的推出总能为我们带来更强悍的性能和更优异的画质。DX9采用了2.0版的Vertex Shader和Pixel Shader,它们都将支持64或甚至128位浮点色彩精度。浮点色彩在动态和精度上的增加给图像质量带来质的飞跃,还让很多过去不可能的特效变成现实。
microsoft directx 全面透析微软DirectX9
Vertex Shader 2.0引入了流程控制,增加了条件跳转、循环和子程序。[www.61k.com)Vertex程序现在最多可以由1024条指令组成(之前只能用128条指令),但这只是理论上的数字,拥有循环和跳转指令自然就可以允许更多数量指令的执行。这大大加强了可编程性和效率。举个例子,计算某些3D场景中的光源是Vertex Shader的一个经常用途,在 2.0版中,开发人员能够仅用一条普通的光源Shader通过调用子程序来产生具有不同的自定义色彩、形状、位置的任意数量的光源效果。另外,增加的指令带来更加复杂和强大的表现,新的操作如正弦、余弦及其他强大的函数运算大大简化了代码的编写,并且能够表现更加复杂的效果。
强大的可编程Pixel Shader是得以实现具有真实照片和电影质量级别效果的真正精华所在。Pixel Shader 2.0可以支持高级程序语言和汇编语言,开发者还可以将其汇编代码嵌入较高级的程序语言中。前一版的Pixel Shader语言被限制为只能使用最多6个材质和28条指令,而2.0版则将这一上限提升至最大16材质和160条指令,也新增了很多强化的运算和操作(例如,2.0版的Pixel Shader能够使用压缩过的凹凸贴图--比标准的凹凸贴图占用更少的内存,这意味着我们能够不受限制地在游戏中使用更多细致的凹凸贴图效果。
注:凹凸贴图(Bump Map)是一种在3D场景中模拟粗糙外表面的技术,它将深度的变化保存到一张贴图中,然后再对3D模型进行标准的混合贴图处理,即可方便地得到具有凹凸感的表面效果。)使得编程工作更加轻松和高效。Pixel Shader的早期版本的另一限制在于一次只能进行一个色彩值的输出。多重渲染物体(Multiple Render Targets)突破了这个限
microsoft directx 全面透析微软DirectX9
制,允许一次输出4个单独的色彩值,这将极大提高Pixel Shader程序的效率。[www.61k.com)这项技术具有许多有价值的应用,一个例子就是在即时运算的3D场景中使用图像过滤或者后曲线处理。
Vertex Shader 1.0(上)和2.0(下)
microsoft directx 全面透析微软DirectX9
Pixel Shader1.4(上)和2.0(下)
DX8.1和DX9.0的画面效果对比
浮点型色彩和32bit帧缓冲格式
目前多数的色彩应用使用各8bit长的整型数来表达红、绿和蓝色,这意味着每一原色的取值从0~255。(www.61k.com)表面上看,目前的色彩精度对于显示而言也许是足够的,但在运算中就是另外一回事。由于整型数不具有小数部分,因此当它们经过Pixel Shader中极其复杂的数学运算后,会出现较大的偏差,这个缺陷将会导致明显的颜色失真。DX9支持数种新的浮点型颜色格式,其精确度具有极大的提高。
同时,DX9提供新的精确至每像素32bit的帧缓冲格式,能够表现出4倍于目前亮度等级的数量,而目前只能提供256级不同的亮度表现。人眼可以分辨数百万种不同层次的亮度,亮度等级范围的提升使得人们对数量大增的亮度等级会有完全不同的感觉。如果亮度级别的数量太少,图像看上去要么曝光过度,要么曝光不足,而亮度等级更精确的图像则看上去感觉更加柔和自然。
位移贴图(Displacement Mapping)
其实早在今年三月,Microsoft在GDC上就展示了DirectX 9.0的崭新魅力,而且让人非常感到意外的是,当时DX9演示的硬件平台是Matrox Parhelia显卡,而并不是传说中的nVIDIA的NV30。在演示中DirectX 9.0配合Matrox Parhelia位移贴图的软件仿真,让人大饱眼福。 具有位移贴图(Displacement Mapping)功能的3D显卡随着DirectX9的演示呈现出照片品质的效果。当应用位移贴图功能后,人物将变得非常复杂真实……
microsoft directx 全面透析微软DirectX9
位移贴图(Displacement Mapping)
硬件位移贴图:(Hardware Displacement Mapping)。(www.61k.com]这是Matrox自己研发的技术,被微软整合进了DirectX 9,成为一个业界标准。硬件位移贴图是一种强劲而简单的3D物体实时计算的新方法。,用以演绎和绘制复杂的3D几何图形。深度适配顶点镶嵌和顶点纹理技术,加上重组基础网面与位移贴图,可以营造一个非常真实的3D图形。硬件位移贴图技术支持贝兹曲线(Bezier Curve)和N-patch表面引擎;其使用纹理贴图为动态几何图形进行顶点纹理贴图;支持细节层级(LOD)几何图形、深度适配镶嵌(Depth Adaptive Tessellation)以及高分辨率几何图形数据压缩编码。
61阅读提醒您本文地址:
位移贴图和凸凹贴图一样,也是改变物体表面的法向量。与凸凹贴图相比,位移贴图的优点是物体的侧面轮廓也具有凸凹不平效果。另外位移贴图可以解决凸凹贴图的阴影问题,因为凸凹贴图可能使本来平的物体扭曲。位移贴图很容易实现,因此如果这个功能获得足够的硬件支持,游戏开发人员也将支持这个功能。
位移贴图有两种类型,采样和预先图象。这两种方法是不同的。预先图象法正如其名,它的主要优势是图象是预先计算好的。这种方法速度很快,但是也有缺点。最大的缺点是无法和自适应镶嵌化和LOD同时工作。所以,我们不太可能在大的物体上看到预先图象位移贴图,例如地形,建筑物等等。
采样位移贴图提供了很多预先图象所不具备的优点,它可以和自适应镶嵌化和LOD协同工作。这对于大的物体很有帮助,例如地形。这个方法由于易用性很可能获得更多的支持。 当然,位移贴图还有一些问题。主要是应用在高阶曲面上。很多象R Patche和Patche这样的曲面,位移贴图必须由设计师小心使用。如果使用不当的话,可能会导致难看的图象问题。
Gamma修正
Gamma修正可以改善色彩表现,并获得更好的材质光影效果。有些硬件产品中已经有这项功能,大多是相当高档的产品,但现在它们正逐渐成为主流。DX9将促使这些高端产品进一步平民化。
其它
在音频方面DirectX9.0加入了DirectMP3、DirectCD两个新的功能单元。DirectMP3单元,支持MP3文件或者音频流的直接调用和解码回放,无需通过Windows API界面调用专门的MP3播放程序。DirectCD单元,支持CD音频在各种需要的情况下直接调用和进行混音回放,无需通过Windows API界面,DirectCD将使CD音频和Directx9及其调用程序更
microsoft directx 全面透析微软DirectX9
好地结合在一起。(www.61k.com)
[展望]
DirectX 9(左)和DirectX 10(右)基本模型架构
在DirectX 8和DirectX 9中,可编程顶点着色和象素渲染,这两个单元是分开来的,也就是说,GPU生产厂家需要在GPU中划分两个区域来存放VS阵列和PS贴图流水线,那么,有没有可能把这两者整合在一起呢?有!答案就是DirectX 10!
与DirectX 10相应的,显示芯片厂商也将会推出全新设计的GPU,它们的晶体管集成度将是前所未有的。
正如您所见,DX9对3D图形技术的每个方面都作出了巨大的改良,将成为促进下一代3D应用诞生的催化剂。
可以预见,未来DirectX将带给我们更多前所未有的视听冲击!
61阅读提醒您本文地址:
三 : 2015build大会 微软展示多个Windows 10手机版新界面截图
在今日凌晨举行的微软Build 2015大会上,尽管Joe Belfiore称由于准备不足微软暂时无法演示其Windows 10手机版新UI界面进展,不过微软承诺将发表博文展示更多Windows 10手机版的新界面截图。在如约发表的博文中,微软显示Windows 10手机版的许多新UI设计元素及变更。总体而言以全Windows平台“适配化UX用户体验(Adaptive UX)”为主导理念设计,在简洁明了的同时能够方便适配扩展至其他Windows设备上,同时也进一步融入了“汉堡式菜单(Hamburger Menu)”这一趋势。
展示的Windows 10手机版界面截图涉及了好多应用,包括Outlook,日历,图库及联系人,可以看到顶栏已经与应用界面融为一体,应用底栏多有包含提供相关操作的按钮,设计更趋简洁实用,色彩更统一。微软称很多开发工作仍在开展中,有些应用截图其实是概念性演示,不过这些开发工作仍然以用户反馈作为参考有序进行。
本文标题:新版微博封面图透明-全面透析微软DirectX961阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1