DirectX—昨天 今天 明天[1]



现在游戏种类和数量几乎呈爆炸式增长游戏制作水平也不断提高那么玩家在欣赏游戏中那绚丽效果时有没有想过是什么造就了这切兀空饩褪荄irectX!DirectX这个词对玩家来说似乎并不陌生现在很多游戏介绍说明里都有“该游戏需要DirectX….以上版本支持”此类甚至3DS Max启动时加速模式选项中也有DirectX身影那么DirectX究竟是什么呢?现在就让我们揭开它面上这层神秘面纱探究竟吧

、初识DirectX
DirectX是Microsoft开发基于Windows平台组API它是为高速实时动画渲染、交互式音乐和环境音效等高要求应用开发服务从Windows 95开始人们就开始接触DirectX2.0WindowsNT4.0里面则是DirectX3.0a但是没有DirectX4版本到了Windows98它就是Windows家族操作系统中不可缺少核心成员的Windows 98中集成了DirectX5Windows2000中集成了DirectX 6Windows Me中集成了DirectX 7而Windows XP天生就带了DirectX 8.1
微软开发了DirectX标准平台并且根据硬件制造厂商和游戏厂商合作共同更新升级DirectX标准硬件制造商按照此标准研发制造更好产品游戏开发者根据这套标准开发游戏也就是说无论硬件是否支持某种特效只要DirectX标准中有游戏开发者就可以把它写到游戏中当这个游戏在硬件上运行如果此硬件根据DirectX标准把这个效果做到了此硬件驱动驱动驾驭其硬件算出结果用户就可以欣赏到此效果这就是“硬件设备无关性”是DirectX真正意义所在
通常Windows对硬件访问管制非常严格用通常办法不易访问但DirectX通过“硬件抽象层(HAL)”给予了开发人员直接访问硬件能力HAL不仅解决了硬件及兼容性问题而且开发人员可以利用它直接访问计算机某些硬件设备例如显示设备直接显存控制和渲染键盘、鼠标和游戏杆控制直接访问控制音频设备直接音频混合和输出能力等等因此开发人员可以充分利用硬件加速将性能优化到个新高度如果目标机器不支持相应硬件加速DirectX还可以仿真加速器以提供强大多媒体环境DirectX家族包含成员有Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectSound和DirectShow

2、DirectX全家福

通过上面介绍相信读者对DirectX已经有个大概了解下面就让我们逐认识它们吧
1、Direct3D、DirectDraw和DirectGraphics
DirectDraw是DirectX家族中元老它为高速2D渲染提供了良好支持由于其具备直接显存访问和位快传送能力使得2D图形绘制速度相对GDI有了个质飞跃其渲染速度甚至有上百倍差距在现在回忆当初玩“红色警戒”和“Diablo”时候大家可不要忘了DirectDraw功劳

DirectDraw在DirectX3.0时就已经接近极致但是随着PC图形技术飞速发展人们逐渐不再满足于2D图形效果而通过2D技术实现伪3D模拟又非常损失效率这种需求直接导致了Direct3D诞生早期Direct3D技术不甚完善相对于2D技术还有差距直到图形加速卡支持硬件3D特效后Direct3D才逐渐步入正轨慢慢显示出它性能优势来下面让我们来回顾下历史看看

Direct3D“成长过程”:
DirectX6中Direct3D添加了如下新特性:
•几何形体灵活顶点格式定义
•几何形体顶点缓冲存储
•支持多纹理渲染
•自动纹理管理
•可选深度缓冲(使用Z Buffer或W Buffer)
•通过凹凸环境贴图(BUMPENVMAP)为反光面和水波特效提供逐像素渲染和贴图能力
DirectX7中Direct3D添加了以下新特性:
•硬件坐标转换和灯光(T&L)支持
•立方体表面环境贴图
•几何渲染
•改进纹理渲染
•自动纹理坐标生成、纹理转换、投影纹理和任意面裁剪
•D3DX实用库
•支持Intel MMX架构、Intel单指令多数据流(SIMD)、SSE®和 AMD® 3DNow®架构

DirectX版本到了8.0时候虽然它依然保持着向前兼容性但是它结构发生了巨大变化3D图形处理技术逐渐统在Vertex Shader和Pixel ShaderVertex Shader被用来描述和修饰3D物体几何形状同时也用来控制光亮和阴影;Pixel Shader则用来操纵物体表面色彩和外观Direct3D和DirectDraw合 2为DirectX家族诞生了个新成员-----DirectGraphics同时也增添了很多令人激动特性:

•完全集成DirectDraw和Direct3D
简化化过程并提高数据分配和管理性能这将减少内存消耗同时集成后图形应用编程接口(API)允许并行顶点输入流以达到更加灵活渲染
•可编程顶点处理语言
允许你编写定制着色器如变形和渐变动画矩阵调色板蒙皮用户定义光照模型般环境映射可编程几何体或者任何其他开发者定义算法
•可编程像素处理语言
允许你编写定制硬件着色器例如通用纹理组合公式逐像素光照(凹凸贴图)适用于实现照片(真实)级镜面效果逐像素环境贴图或者任何其他开发者定义算法
•支持多重采样渲染
允许全场景反走样和多重采样效果例如运动模糊及景深(镜头聚焦效果)
•点精灵
允许高性能粒子系统渲染例如火花、爆炸、雨、雪等等
•3-D空间纹理
允许范围衰减实现逐像素级光照及空间大气效果甚至是更复杂几何图形应用
•支持高维图元
对来自主要3-D创作工具3-D内容增强其外观并简化内容映射
•高级技术
包含了用于输出Direct3D蒙皮网格 3维内容创建工具插件使用了Direct3D多种区别技术多分辨率层次细节(LOD)几何还有高维表面数据
•索引顶点混合
扩展了几何混合支持允许通过指定使用个矩阵索引把矩阵应用于顶点混合处理
•扩充了Direct3DX实用库
包含了大量Direct3DX实用库是个位于Direct3D的上辅助层用于简化3-D图形开发者常规工作它包括了个蒙皮库支持对网格操作还有组装顶点和像素着色器功能
DirectX每次升级都会有重大内核结构改变它会给我们带来巨大视觉冲击DirectX7核心T&L引擎到DirectX9干脆被抛弃了因此对于图形芯片开发商、游戏开发商以及广大用户而言DirectX 9确是项“绝无仅有优越图形技术”DirectX 9“具有多项令人兴奋全新功能特征”:


\">

Direct3D图形渲染管道

•Vertex Shader 2.0和Pixel Shader 2.0

在DirectX9中Vertex Shader和Pixel Shader版本升级到了2.0它们都支持64或甚至128位浮点色彩精度浮点色彩在动态和精度上增加给图像质量带来质飞跃这样在DirectX9中你可以轻易实现电影级别般逼真效果!
DirectX8和DirectX9对比参数:
\">

Vertex Shader 2.0引入了流程控制增加了条件跳转、循环和子Vertex现在最多可以由1024条指令组成(的前只能用128条指令)增加指令带来更加复杂和强大表现操作如正弦、余弦及其他强大运算大大简化了代码编写并且能够表现更加复杂效果

Vertex Shader 1.0 VertexShader 2.0
强大可编程Pixel Shader是实现具有电影质量级别效果真正精华所在Pixel Shader 2.0可以支持高级语言和汇编语言开发人员还可以将其汇编代码嵌入较高级语言中Pixel Shader语言被限制为只能使用最多6个材质和28条指令而2.0版则将这上限提升至最大16材质和160条指令也新增了很多强化运算和操作

Pixel Shader 1.4


Pixel Shader 2.0

此外各种Shader工具大力协助如nVidiaCg语言和ATIRenderMonkey使得实时图形渲染质量飞速提高nVidia和ATI官方Demo就足以介绍说明这DirectX9中也改进了部分接口定义Vertex Shader和Pixel Shader分别单独提供了个接口而且提供了常见图形绘制接口如线段绘制等这进步减轻了开发人员负担

•浮点型色彩和32位帧缓冲格式

目前大多数色彩表示法(如RGB)用8位整数表示红、绿、蓝色也许对于显示来说这已经足够了但在运算中似乎还远不够由于整数没有小数部分因此当它们经过Pixel Shader极其复杂数学运算后就会产生较大误差这可能导致色彩明显失真而DirectX9支持数种浮点色彩格式使得其精度有了很大提高同时DirectX9支持精确到每像素32位帧缓冲格式能够表现出4倍于目前亮度等级数量这使得图像看上去更加清晰和自然

除此以外DirectX9还提供位移贴图(displacement maps)以及改进设备模拟等特性支持并且毫无意外地DirectX9 SDK中也进步扩展了Direct3DX实用库提高了开发效率

Tags: 

延伸阅读

最新评论

发表评论