background image

第 13 章  DirectX 编程入门

bimonthly updates )。当前最新版本为 2006 年 10 月 11 日推出的DX October 

2006 。 它 们 都 包 含 了 ( 于 2002 年 推 出 的 专 为 .NET 框 架 设 计 的 ) 托 管

Managed) DirectX ,将原来 DirectX 多个分离的COM 模块集成到了一个容易使用

的单一

CLR 文件之中。

10

—— ?: DirectX 不会有第 10 版了,因为微软公司已将DirectX 的功能集成进其

新一代操作系统

Windows Vista 中,而不再将其作为一个额外的模块了。但是会有

Direct3D 10 ,已于 2006 年 12 月 13 日随 Direct3D SDK 的 December 2006 版一起

发 布 , 并 被 嵌 入 到

Windows Vista 中。另外,

作为学生和业余爱好者的

DirectX 替代产品,微软公

司于

2004 年 3 月 24 日宣

布了用于托管运行环境下计
算机游戏的设计、开发和管
理的框架和工具集

XNA ,

并于

2006 年 12 月 11 日

推出了

XNA Framework Redistributable  和 XNA Game Studio Express 的 1.0 版,可用

Windows 和 Xbox 360 游戏的开发。

13.1.3   结构

DirectX 是一种基于COM (Component Object Model,组件对象模型)的系统,它

既不属于驱动程序层,也不属于应用层。

DirectX 的主要设计目标是在提供某种设备独立性

的同时获取高速度,为此微软公司为

DirectX 设计了如图13-1所示的体系结构。其中:

HAL = Hardware Abstract Layer(硬件抽象层)

——负责检测本机的硬件功能,

并以一种独立于设备的方式提供这些功能;

HEL  =  Hardware 

Emulation Layer (硬件模拟层)

——负责提供 DirectX 功能中本机硬件不支持部

分的模拟实现。

但是从

8.0 版起, DirectX 就不再提供硬件模拟层HEL 了,需要开发商、第三方或

自己来编写一个

PSD( Pluggable Software Device 可插式软件设备)连到 DirectX 提供的

HEL 接口上,称之为参考设备。但是现在很少有这样的

PSD可用,因此新版本的DirectX

是严重依赖于硬件的。

13.1.4   组成

DirectX 由多个( COM 组件)模块组成,而且随着版本的演化,这些模块也在不断

地增减、合并和改变。最新的

DirectX 组件的模块构成如图13-2所示,括号中的数字为该模

块被首次引进(或移出)的版本号。

• 3 •

Windows 

API

应用程序

Windows API 子系统

(GDI 、MMAPI 、MCI 、...

)

Windows 驱动程序接口

DirectX

HEL

HAL

PC 硬件子系统

DirectX

图 13-1  DirectX 子系统