赫利电影下载:电脑里的显存怎么看,DirectX 8.0中的DirectX是什么?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 18:14:54

开始
运行
dxdiag

Direct X是微软公司专为PC游戏开发的API(应用程序接口),特点是:比较容易控制,可令显卡发挥不同的功能,与Windows 95和Windows NT兼容性较好。在Direct X 5.0中共分六个部分:DirectDraw?管理游戏的视频输出、Direct 3D?管理游戏的3D图形、DirectPlay?管理游戏的网络通讯、DirectSound?管理游戏的声音输出、DirectInput?管理游戏摇杆控制、Direct Setup?管理游戏的安装。

没有这个有的游戏就玩不了的,

DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。只是其在3D图形方面的优秀表现,让它的其它方面显得暗淡无光。DirectX开发之初是为了弥补Windows 3.1系统对图形、声音处理能力的不足,而今已发展成为对整个多媒体系统的各个方面都有决定性影响的接口。

DirectX 1.0
第一代的DirectX很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形API-OpenGL,缺乏硬件的支持成了其流行的最大障碍。
DirectX 1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能(比如:显示卡上的块移动功能)以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图像进行加速。这时候的DirectX不包括现在所有的3D功能,还处于一个初级阶段。

DirectX 2.0
DirectX 2.0在二维图形方面做了些改进,增加了一些动态效果,采用了Direct 3D的技术。这样DirectX 2.0与DirectX 1.0有了相当大的不同。在DirectX 2.0中,采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图像进行加速计算的。DirectX 2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。从DirectX 2.0开始,整个DirectX的设计架构雏形就已基本完成。

DirectX 3.0
DirectX 3.0的推出是在1997年最后一个版本的Windows95发布后不久,此时3D游戏开始深入人心,DirectX也逐渐得到软硬件厂商的认可。97年时应用程序接口标准共有三个,分别是专业的OpenGL接口,微软的DirectX D接口和3DFX公司的Glide接口。而那时的3DFX公司是最为强大的显卡制造商,它的Glide接口自然也受到最广泛的应用,但随着3DFX公司的没落,Voodoo显卡的衰败,Glide接口才逐渐消失了。

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

DirectX 5.0
微软公司并没有推出DirectX 4.0,而是直接推出了DirectX 5.0。此版本对Direct3D做出了很大的改动,加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强,还加入了S3的纹理压缩技术。
同时,DirectX 5.0在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备。因此,DirectX发展到DirectX 5.0才真正走向了成熟。此时的DirectX性能完全不逊色于其它3D API,而且大有后来居上之势。

DirectX 6.0
DirectX 6.0推出时,其最大的竞争对手之一Glide,已逐步走向了没落,而DirectX则得到了大多数厂商的认可。DirectX 6.0中加入了双线性过滤、三线性过滤等优化3D图像质量的技术,游戏中的3D技术逐渐走入成熟阶段。

DirectX 7.0
DirectX 7.0最大的特色就是支持T&L,中文名称是“坐标转换和光源”。3D游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上灯光的3D渲染是最消耗资源的。虽然OpenGL中已有相关技术,但此前从未在民用级硬件中出现。

在T&L问世之前,位置转换和灯光都需要CPU来计算,CPU速度越快,游戏表现越流畅。使用了T&L功能后,这两种效果的计算用显示卡的GPU来计算,这样就可以把CPU从繁忙的劳动中解脱出来。换句话说,拥有T&L显示卡,使用DirectX 7.0,即使没有高速的CPU,同样能流畅的跑3D游戏。

DirectX 8.0
DirectX 8.0的推出引发了一场显卡革命,它首次引入了“像素渲染”概念,同时具备像素渲染引擎(Pixel Shader)与顶点渲染引擎(Vertex Shader),反映在特效上就是动态光影效果。同硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器。这意味着程序员可通过它们实现3D场景构建的难度大大降低。通过VS和PS的渲染,可以很容易的宁造出真实的水面动态波纹光影效果。此时DirectX的权威地位终于建成。

DirectX 9.0
2002年底,微软发布DirectX9.0。DirectX 9中PS单元的渲染精度已达到浮点精度,传统的硬件T&L单元也被取消。全新的VertexShader(顶点着色引擎)编程将比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。

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

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

增加对浮点数据的处理功能,以前只能对整数进行处理,这样提高渲染精度,使最终处理的色彩格式达到电影级别。突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。

显卡所支持的DirectX版本已成为评价显卡性能的标准,从显卡支持什么版本的DirectX,用户就可以分辨出显卡的性能高低,从而选择出适合于自己的显卡产品。

DirectX 8.0 简介
欢迎关注 Driving DirectX。在本月的栏目中,我们将开始探索 Microsoft® DirectX® 8.0。首先,我们将概括介绍这个新版本为开发人员提供的所有精彩特性。您可以在 DirectX 开发人员中心(英文)找到 DirectX 8.0 运行时和 SDK 的下载链接。有些人说,在相当长一段时间内,这将是最强大的 DirectX 版本。下面的新特性列表为这一说法提供了证明。

前言
DirectX 8.0 的每个组件都包括了重要的新特性,它们极大地增强了 DirectX 的功能。图形、音频和网络三个组件被彻底重写。DirectInput® 包括了新的配置功能、操作映射和更好的国际化支持。DirectShow® 第一次作为 DirectX 的一部分出现在运行时和 SDK 中。

简而言之,DirectX 8.0 提供的新特性包括:

DirectX Graphics——集成 DirectDraw 和 Direct3D
Microsoft DirectDraw® 和 Microsoft Direct3D® 并入了 DirectX Graphics 组件。API 已经进行了大幅度更新,现在更容易使用,并且支持最新的图形硬件。最引人注目的新特性是支持可编程着色器(着色器是用着色语言编写的一段代码,着色语言是专为在可编程顶点流水线或可编程像素流水线中使用而设计的)。

DirectX Audio——集成 DirectMusic 和 DirectSound
Microsoft DirectMusic® 和 Microsoft DirectSound® 现在紧密集成到新的 DirectX Audio 组件中。WAV 文件或其他资源现在可以由 DirectMusic 加载器加载,通过 DirectMusic 演奏器进行播放,并用 MIDI 音响进行同步。

DirectPlay 可伸缩性和性能更佳
Microsoft DirectPlay® 组件进行了大幅度更新,其易用性和功能均得到改进,在可伸缩性和性能方面尤为显著。此外,DirectPlay 现在还支持玩家之间的语音通讯。

DirectInput 中的操作映射
Microsoft DirectInput 引入了一个重要的新特性:操作映射。通过操作映射能够在输入操作和输入设备之间建立连接。您只需输入设备处理,而不必再依赖特定的设备对象。

DirectX 中包含 DirectShow
现在 Microsoft DirectShow 是 DirectX 的一个组成部分,在此版本中已经进行了更新。
下面按每个组件详细地介绍这些新特性。

DirectX 8.0 Graphics
DirectX 8.0 Microsoft Direct3D® API 接口中加入了许多新特性,许多原有性能也得以增强。

DirectDraw 和 Direct3D 完整集成

可编程顶点处理语言

可编程像素处理语言

多重采样渲染支持

点对象

三维立体纹理

更高阶的图元支持

针对各种 D3D 的三维内容创建工具支持

带索引的顶点混色

扩展的 Direct3DX 工具库
DirectX Graphics 的一个最显著的变化是将 DirectDraw(二维图形接口)和 Direct3D(三维图形接口)合并为一个公用接口。迄今为止的很长一段时间内,DirectDraw 和 Direct3D 一直相互交叉,因此,将它们划分为两个独立的接口越来越不适应发展。新的集成简化了 Direct3D 核心的初始化和控制,使这些操作更加简单。这种变化不仅简化了应用程序的初始化,而且改进了数据分配和管理的性能,从而减少了内存的占用。合并接口的另一个原因是 DirectDraw 的开发几乎完全停止了,在 DirectX 6.0 和 DirectX 7.0 中对它所作的修改仅仅是稍作美化。下面的图 1 显示了新的 Direct3D 体系结构。

screen.width-600)this.style.width=screen.width-600;">
图 1:DirectX 8.0 Graphics 体系结构

图形 API 的集成还启用了并行顶点输入流,使动态应用数据结构的映射更加灵活。

可编程着色器的加入可以说是 DirectX 8.0 中 Direct3D 更新的最显著特性。语言的扩充性非常好——考虑到未来几年内图形硬件方面将涌现大量新特性,我们对着色语言所进行的小小补充将会获得数倍的回报。着色语言是同时为顶点处理和像素处理提供的。

可编程顶点处理语言使程序员可为下列情况编写硬件着色器:

变形/过渡动画

定义矩阵调色板外观

用户定义的光照模型

一般的环境贴图

过程性几何图形

任何其他开发人员定义的算法
可编程像素处理语言使程序员可为下列情况编写自定义的硬件着色器:

一般的纹理合并表达式

按像素光照(凹凸贴图)

按像素环境贴图(用于照片级真实效果)

其他开发人员定义的算法
请注意,为顶点和像素操作而添加的着色语言与用在顶点流水线中的变换和光照以及用在像素流水线中的多重纹理等“旧”方法同时存在。图 2 说明了 DirectX 8.0 图形流水线。

screen.width-600)this.style.width=screen.width-600;">
图 2:DirectX 8.0 图形流水线对新旧方法的支持

另外一些精彩特性使得实现各种特殊效果更加简单。多重采样渲染支持可以实现全方位的反走样和多重采样效果,例如动态柔化和景深。点对象支持可以实现闪烁、爆炸、下雨、下雪等微粒系统的高性能渲染。立体纹理可在按像素光照和立体模糊效果中实现区域衰减,并可以应用到更复杂的几何图形中。

更高阶的图元支持改善了三维内容的外观,用主流三维创作工具创建的内容的映射也更为简单。另外,DirectX 8.0 Graphics 还包括三维内容创建工具插件,可将外观网格导出到 .X 文件,以便以后在 Direct3D(使用各种 Direct3D 技术)、多重精度级别细节 (LOD) 几何图形和更高阶曲面数据中使用。带索引的顶点混色扩展了几何图形混色支持,这样,用于顶点混色的矩阵就能够通过矩阵索引来引用。

Direct3DX (D3DX) 工具库中添加了大量功能,在 Direct3D 之上构造的帮助器层简化了三维图形开发人员所遇到的常见任务。D3DX 现在包括“定义外观”库(支持使用网格)以及用于装配顶点和像素着色器的功能。请注意,原来由 D3D_OVERLOADS 提供的功能现在已经移到 D3DX 工具库中。(D3D_OVERLOADS 在 Microsoft DirectX 5.0 中首次引入。)

DirectX Audio
Microsoft DirectX 8.0 Audio 为播放集成的音乐和声音效果提供了新的体系结构。尽管仍然使用名称 Microsoft DirectSound 和 Microsoft DirectMusic,但在它们之间已经没有明显的区别。希望将来 DirectMusic API 能够成为创建交互式声音效果的首选 API。

DirectX 8.0 Audio 的部分新特性包括:

.wav 文件和基于消息的声音集成在一个播放机制中

音频通道模型更加灵活、强大,其中包括对段落状态进行个别控制

DLS2 合成,包括特殊效果

音频脚本编写

容器对象,用于在单个文件中保存 DirectMusic Producer 工程的所有组件

对演奏、段落和声道的更强大的控制
新的音频体系结构将 DirectMusic 合成器作为主要的 DirectX 8.0 Audio 声音生成器。这一高度优化的可下载声音级别 2 (DLS2) 合成器可以创建所有的声音,对它们进行混音,并将结果发送到 DirectSound 缓存,以便进行进一步的处理。DirectMusic 合成器也可以在输出之前将多个独立的声音进行混音。这样,多个独立的声音可以通过同一种音频效果进行处理,并分配到三维空间中的同一个位置。它们只使用一个 DirectSound3D 缓存,将 CPU 的使用和对三维硬件的要求降至最低。请参阅图 3,以了解新的音频体系结构。

screen.width-600)this.style.width=screen.width-600;">
图 3:DirectX 8.0 Audio 体系结构

.wav 文件和资源现在可以通过 DirectMusic 加载器加载,并通过 DirectMusic 演奏器播放。应用程序不再需要分析 .wav 文件,并将其复制或流入 DirectSound 缓存。.wav 文件播放的定时基于 DirectMusic 主时钟,.wav 文件可以在音乐事件发生的同时播放,并可以象其他段落一样通过工具处理。DirectSound API 仍然会得到支持,您仍然可以通过 DirectSound 缓存直接播放 .wav 文件。DirectSound 仍将是用于 .wav 文件捕获和全双工的 API。

在以前版本的 DirectMusic 中,演奏通道被映射到端口,同时每个端口将其输出发送到一个 DirectSound 缓存。在新的模型下,段落中的声道被映射到音频通道,控制数据从演奏器流向最终输出。合成器的输出可以发送到多个播放缓存,而每个播放缓存有自己的三维位置和效果。音频通道由应用程序动态创建,或者设计在段落中。段落的每个播放实例都有自己的音频通道,因此可以单独修改每个段落状态的音量、音质和音调等参数。

DirectMusic 合成器现在基于 DLS2 标准,能够提供更高质量的声音合成。DLS2 合成器的新特性包括六级封装、语音分层、释放波形和额外的低频振荡器 (LFO)。每个语音都有一个可选的低通谐振过滤器。作为新的音频体系结构的一部分,DLS2 合成器可用于简单的声音效果播放,包括:

任意循环点

每个声音的过滤器

混音

自动流播放

用于播放的 ACM 编解码集成

效果处理总线

轻松加载 .wav 文件
通过使用脚本,作曲家和音效设计师可以对演奏器进行更自如的控制。应用程序不需要处理播放的细节,而代之以调用脚本。例如,一个游戏事件可能触发一个脚本函数。通过修改函数,脚本作者可以轻松地修改声道对游戏事件的响应。

DirectMusic Producer 工程的所有组件都可以保留在一个文件中,查找和加载所有对象非常容易。容器也可以嵌在段落中,因此播放一个段落所需要的所有内容都可以保存在这个段落中。

DirectX Audio 对演奏、段落和声道的控制更加强大。演奏通知事件现在有一个新的通知类型 DMUS_NOTIFICATION_MUSICALMOSTEND,它表示队列中的最后一个主段落即将结束。这样,应用程序就有机会来计划播放新的段落。

段落的新特性包括:作曲家可以在段落中设置点,指定从何处开始播放段落,从而维护段落与时间签名之间的关系。主段落可以包含联接其他段落的任意点。这些点不仅可以联接最近的小节、节拍或网格,还可以进行更多的控制。在当前主段落完成播放时,可以播放新的段落联接标志 DMUS_SEGF_SEGMENTEND 指定的段落。新的 DMUS_SEG_REPEAT_INFINITE 标志使得一个段落可以播放无限多次。

对于声道,新的配置和播放标记使得每次播放或循环播放某个段落时,都可以对声道进行改写。例如,可以配置和弦声道,使得每次播放该段落时,都建立新的和声进行。应用程序可以单独设置各个声道的配置,禁用播放和参数控制。声道可以配置为根据时钟时间而不是音乐时间进行操作。通过配置自控段落中的声道,可以用它来替代主段落或控制中的参数声道。最后,包含歌词声道的段落可以将时间戳记文字发送到演奏器。

限于篇幅,其他的新音频特性在这里不再赘述。如果您正在深入研究音频,研究 DirectX 8 的音频特性可能要花费您的大量时间。请参阅 SDK 中的新文档和范例。

DirectX 8.0 DirectPlay
DirectPlay 是应用程序和通讯服务之间的高级软件接口。有了 DirectPlay,通过 Internet、调制解调器链接或网络来连接游戏将非常简单。DirectPlay 既提供了高级的传输层服务(例如,有保证或无保证的传递,慢速链接上的通讯扼杀,以及放弃连接检测等),也提供了会话层服务(包括玩家名称表管理和点对点主机转移)。图 4 显示了 DirectPlay 体系结构,以及它如何提供与通讯服务提供程序无关的独立性。

screen.width-600)this.style.width=screen.width-600;">
图 4:DirectPlay 体系结构

下面是 Microsoft DirectPlay API for DirectX 8.0 的新特性列表:

接口已经完全重写。

前端操作现在与 DirectPlay 的其他部分无关。

已经加入了语音传输。

寻址信息已经从基于 GUID 的数据格式变为基于 URL 的数据格式。

可伸缩性更强大,内存管理更完善。

对防火墙和网络地址翻译器 (NAT) 的支持更佳。
分离创建点对点会话和客户端/服务器会话的接口,使创建网络应用程序的复杂度得到了奇迹般的简化。用于创建 DirectPlay 传输会话的接口包括:

IDirectPlay8Peer,提供创建点对点会话的方法

IDirectPlay8Client,提供创建客户端/服务器应用程序的客户端部分的方法

IDirectPlay8Server,提供创建客户端/服务器应用程序的服务器端部分的方法
DirectPlay 不再要求前端客户端只能与 DirectPlay 应用程序配合使用。这样,前端服务提供程序和应用程序都可以实现 DirectPlay,而无须相互匹配。前端实施现在分为两个简化的接口:

IDirectPlay8LobbyClient,用于管理前端客户端,以及计算和启动前端识别应用程序。

IDirectPlay8LobbiedApplication,用于在系统中注册可由前端启动的应用程序,使它真正能由前端启动。它也用于从前端获取连接信息,使游戏启动时无需查询用户。
DirectPlay Voice 提供了一组接口,用于给应用程序添加实时语音通讯。下列新接口提供了语音支持:

IDirectPlayVoiceClient 提供了在 DirectPlay Voice 会话中创建和管理客户端的方法。

IDirectPlayVoiceServer 提供了承载和管理 DirectPlay Voice 会话的方法。

IDirectPlayVoiceTest 用于测试客户端计算机上的音频设置。
图 5 显示了使用 DirectPlay Voice 时可用的组件。

screen.width-600)this.style.width=screen.width-600;">
图 5:DirectPlay Voice 组件

以前版本的 DirectPlay 通过 GUID 地址使用二进制数据块,难以实现和读取。在 DirectX 8.0 中,DirectPlay 引入了 URL 格式的地址表示方法,并使用一组新的接口来创建和操作新的寻址格式:

IDirectPlay8Address 提供用于创建和操作 DirectPlay 地址的基本寻址方法。

IDirectPlay8AddressIP 提供 IP 提供程序专用的寻址服务。
就 DirectX 8.0 而言,DirectPlay 已经被彻底重写,以便提供卓越的性能和强大的可伸缩性。用户带宽的增长给网络游戏设计和实施带来了天翻地覆的影响。改进的 DirectPlay 线程缓冲池管理使开发人员更容易设计可变化而且更可靠的应用程序,能够同时支持大量联机玩家。

编写跨越 NAT、防火墙和其他 Internet 连接共享 (ICS) 方法的网络游戏可能会非常困难,针对无保证 (UDP) 通讯编写网络游戏尤其困难。在 DirectX 8.0 中,DirectPlay 开发时已经注意了这些问题,它将支持可能的 NAT 解决方案。DirectPlay TCP/IP 服务提供程序对游戏数据使用单一的、开发人员可选的 UDP 端口,从而可以适当地配置防火墙和 NAT。另外,DirectPlay 使用了 UDP,因此对于客户端/服务器体系结构的游戏来说,某些 NAT 后的客户端可以直接连接到游戏,而无须进行额外的配置。

DirectX 8.0 DirectInput
DirectInput 为游戏杆、头盔、多键鼠标以及力回馈设备等各种输入设备提供了最先进的接口。通