1.Direct X基础

1.Direct X基础


2024年4月18日发(作者:自己在家怎么给电脑重装系统)

1. Direct X基础

Microsoft DirectX应用程序接口(API)发展的目的,是为了要提供一组接口,让执行

Microsoft Windows操作系统的计算机能很有效地掌控多媒体硬件。DirectX让程序设计人

员可以使用非常接近硬件内部处理指令和数据架构的方法,却不需要太过低阶到必须针对不

同装置撰写不同的原始码。程序设计人员只要撰写非装置相依性的原始码,就可以开发出永

远最佳化的软件-即使是使用者为了改善系统效能而增加了更好的3D图形加速卡、声卡、

输入装置等等。

DirectX的设计理念是要让开发人员拥有一个类似MS-DOS效能的环境,而且速度远快于

Windows-based程序代码,因为早期的Windows多媒体API包含了不必要的系统负担。然

而,由于支持了所有可运用的硬件特性,DirectX的程序代码执行速度甚至比多数的MS-

DOS应用程序还快。DirectX API是架构在一种可以忽略硬件装置依赖性的硬件抽象层

(hardware abstraction layer, HAL)上。也因为DirectX是针对未来的扩充性所设计,所

以很多现有硬件还无法支持DirectX所定义的许多硬件加速支持特性。这种特性会由硬件仿

真层(hardware emulation layer,HEL)来模拟,如果当HEL无法支持时则予忽略。当某

种能加速DirectX功能(例如进阶纹理)的装置出现时,您便可以用它来取代旧的装置,而

您所开发的前瞻性软件就会立刻运用新装置所支持的加速特性。

当您针对某种装置建立一个DirectX对象时,DirectX会自动向硬件(也就是HAL)查询关

于这个装置的信息。这些信息会填入一个叫特性位(cap bits)的表格中(特性位是功能位

(capability bits)的缩写)。特性位中的信息可以用来决定某种特定动作是由硬件本身能执

行或是要用HEL去模拟。

即使Microsoft提供了特性位让您可以决定硬件(HAL)中提供哪些特性或是哪些必须经由

软件(HEL)仿真,您还是应该定义出一套能接受的最低系统组态,并且让您的程序代码最

佳化,让程序在这种最低系统上也能尽可能有效率地执行。换句话说,非万不得已不去使用

HEL,同时您应该在HEL的影响性最小的前提下去开发应用程序。如此就能利用目标系统

上更强大的硬件支持的进阶功能,而不会迁就这种最低配备。这样就能在游戏中让那些拥有

功能强大的系统玩家提供许多加强的功能,如进阶贴图、较复杂的多边形,或是动态光源

等。不过您得确定在设计上必须尽可能地充分运用进阶的特性。记住,硬件的处理能力进步

越来越快,同时游戏的狂热分子也会不停地更新他们的系统,如果您在设计软件时不向前思

考,势必将失去可观的销售量。

DirectX API

DirectX API包含了数种API,这些API是设计来合并使用并协助您开发3D多媒体游戏及

仿真(以及其它许多的非3D应用程序)。它提供功能的函式库来执行2D及3D的成像;

标准及3D音效、音乐、支持键盘、游戏杆,及其它的输入装置(包括力回馈硬件)、网络

游戏。这些接口相互结合可以提供一组强大并整合的指令函式库,让您可以有效地创造出优

越的游戏及仿真程序。

目前在DirectX中已提供的API有DirectDraw、Direct3D、DirectMusic、DirectSound、

DirectPlay、DirectInput,以及DirectSetup。在本书及随书光盘的程序代码中,将会告诉您

如何去整合其中的数种API-DirectDraw、Direct3D、DirectSound、DirectPlay,以及

DirectInput-来完成一个焦点放在第一人称角度的3D游戏类应用程序。

DirectDraw

DirectDraw API提供显示装置的处理、点阵数据的控制、屏幕外内存,及快速存取其它硬

件特性(如图块搬移、切换页)。它同时也是Direct3D的基本架构。在 第三章 ,本书还会

提到所有关于要建立一个Direct3D的应用程序时所必须了解的DirectDraw特性。您可以运

用这里的原始码作为您所开发的3D游戏架构。如果您愿意,您也可以运用DirectDraw本

身来开发2D游戏;然而这里不会描述如何用DirectDraw去开发2D游戏,因为本书的重点

是在3D游戏上。

Direct3D

Direct3D是本书的重点,它是一种可以用3D图形及利用3D指令的硬件加速特性优点来撰

写程序的API。几乎所有市售的绘图卡都支持3D加速,这对个人计算机上的3D绘图应用

的革新来说是极其重大的。几乎所有Windows上的3D游戏都是用Direct3D所完成的。

当Direct3D刚出现时,它提供二种API:立即模式(Immediate Mode)和Retained模

式。立即模式(命名由来是因为对象的绘制会在指令启动时立即发生)较不易使用,但却是

弹性较大,较低阶的API,在开发游戏时也会执行得较有效率。Retained模式(命名由来

是因为API会先存入影像数据库中再一次全部绘制成像)则是架构在立即模式的上一层,

用来提供附加的功能,如贴图管理、对象档案加载、框架阶层,及动画。Retained模式比

立即模式易学易用,但是程序设计师需求的还是立即模式所能提供的效率及弹性。Retained

模式API的开发在DirectX 6时已经中止,Direct3D则把重心放在改善立即模式API的威力

及易用程度上。Retained模式并不支持重要的新技术,如多重贴图(multitexturing)、凹

凸对映(bump mapping),或硬件转换及打光(lighting),所有未来的3D程序都应该用

立即模式开发,本书也是完全针对立即模式的API而来,一旦您读完了这本书,您将可以


发布者:admin,转转请注明出处:http://www.yc00.com/xitong/1713452292a2251739.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信