background image

13章   DirectX编程入门

DirectX 是微软公司为编写游戏和其他高性能多媒体应用程序而开发的一组高级的

Windows 低层API ,它包含了对图(图形、视频和三维动画)、声音(声效与音乐)、输

入设备和网络游戏等的支持。

本章先概述

DirectX 的基本内容,然后介绍 DirectX 的主要组件Direct3D 和

DirectSound 的基本编程方法,并给出若干具体编程实例。

13.1  DirectX概述

本节简单介绍

DurectX 的发展历史、版本和功能的演化、结构和模块划分。

DurectX 是 Windows 的一种多媒体API ,它在保持设备无关性的同时,可以让应用

程序直接控制多媒体设备,从而能充分利用硬件的功能,因此可获得最高的性能。

DurectX 自从推出以来,就始终处在快速发展的过程之中。它已经经历了多个版本,

其模块和功能也一直在不断地增加和完善。

DirectX 是一种基于COM 的系统,主要由硬件抽象层HAL 和硬件模拟层 HEL 所

构成。

DurectX 被分成若干个组件模块,涵盖了多媒体应用的方方面面。而且这些组件的数

目、名称和功能,也是随着其版本的演化而有所增减、改变和加强。

13.1.1   历史

微软公司于

1990 年 5 月推出的Windows 3.0 大获成功,它是一种与设备无关的具有

图形用户界面(

GUI)的操作系统。后来又于1992 年 3 月推出Windows 3.1 ,提供了对多

媒体的支持。不过

Windows 的与设备无关的设计思想,虽然使得Windows 向程序员提供

了一个独立于硬件的软件开发优秀平台,但它不让应用程序直接操作显卡和声卡等多媒体硬
件,这样就降低了多媒体应用程序(特别是计算机游戏)的运行效率,例如限制了动画的帧
率、不提供混音功能等。所以当时的

Windows 并不是一个可以开发和运行高效多媒体程序

(如

3D 游戏)的理想环境,逼迫PC 游戏开发商只好绕开Windows 而仍旧开发 DOS 下

的游戏。

为了改变这种难堪的局面,促使游戏界放弃

DOS 而使用 Windows ,微软需要在设

备无关性与高性能之间取得某种平衡,决定为

Windows 添加一种高性能的动画机制(以及

后来的输入与音响等),因此于

1995 年推出了Game SDK,后来改名为DirectX 。其中的

Direct 指 可 以 直 接 访 问 多 媒 体 硬 件 ; X 指 它 的 不 同 组 成 部 分 , 如