6.3.1DirectX简介
DirectX是由微软公司开发的用途广泛的应用程序开发接口。
(1)DirectX Graphics
显示部分担任图形处理的关键,分为DirectDraw(DDraw)和Direct3D(D3D),前者主要负责2D图像加速。下图为DirectX8.0 Graphics 体系结构:

(2)DirectX Audio
声音部分中最主要的API是DirectSound,除了播放声音和处理混音之外,还加强了3d音效,并提供了录音功能。DirectX 8.0 以后的声音部分的新特性包括:
• wav 文件和基于消息的声音集成在一个播放机制中
• 音频通道模型更加灵活、强大,其中包括对段落状态进行个别控制
• DLS2(可下载声音级别2)合成,包括特殊效果
• 音频脚本编写
• 容器对象,可在单个文件中保存 DirectMusic Producer 工程的所有组件
• 对演奏、段落和声道的更强大的控制

(3)DirectPlay
DirectPlay 是应用程序和通讯服务之间的高级软件接口。有了DirectPlay,通过Internet、调制解调器链接或网络来连接游戏将非常简单。

(4)DirectInput
DirectInput为游戏提供高级输入功能并能处理游戏杆以及包括鼠标、键盘和强力反馈游戏控制器在内的其它相关设备的输入。 DirectInput直接建立在所有输入设备的驱动之上,相比标准的Win32 API函数具备更高的灵活性。DirectX 8.0 以后的版本中,有如下特性:操作映射、对国际化应用程序的支持更佳、新的接口创建支持、对游戏杆滑块数据更改。
(5)DirectShow
DirectShow是一个开放性的应用框架,也是一套基于COM的编程接口。DirectShow系统的基本工作原理就是“流水线”:将单元组件——Filter——串联在一起,交由Filter Graph Manager统一控制。系统的输入可以是本地文件系统、硬件插卡、因特网等,系统的输出可以是声卡(声音再现)、显卡(视频内容显示)、本地文件系统,当然也可以最终将数据向网络发送。
6.3.2 OpenGL简介
OpenGL是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。目前,包括Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL做为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,其中比较著名的产品包括动画制作软件Soft Image和3D Studio MAX、仿真软件Open Inventor、VR软件World Tool Kit、CAM软件ProEngineer、GIS软件ARC/INFO等等。
(1)OpenGL特点及功能
OpenGL实际上是一个功能强大,调用方便的底层的三维图形软件包。它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植。它具有七大功能:
•建模
•变换
•颜色模式设置
•光照和材质设置
•纹理映射(Texture Mapping)
•位图显示和图象增强
•双缓存动画(Double Buffering)
(2)OpenGL工作流程

(3)Windows NT下OpenGL的结构


在三维图形加速下OpenGL运行机制
6.3.3游戏编程语言简介
(1)c语言
Ø优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化, 因此其他平台上的各版本非常相似。
Ø缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。
Ø移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。如为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。
(2)c++
Ø优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
Ø缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。
Ø移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
(3)汇编语言
Ø优点:最小、最快的语言。汇编语言能编写出比任何其他语言能实现的快得多的程序。
Ø缺点:难学、语法晦涩、坚持效率,造成大量额外代码。
Ø移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上,如AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的。
(4)Pascal语言
Ø优点:易学、平台相关的运行(Dephi)非常好。
Ø缺点:“世界潮流”面向对象的Pascal继承者(Modula、Oberon)尚未成功。
Ø移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。
(5)Visual Basic
Ø优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件,DirectX 7已准备提供Visual Basic的支持。
Ø缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。专利权。
Ø移植性:非常差。因为Visual Basic是微软的产品,你自然就被局限在他们实现它的平台上。
(6)Java
Ø优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。
Ø缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序代码长,执行速度慢。
Ø移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。
(7)创作工具
Ø优点:快速原型 — 如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游。
Ø缺点:专利权,至于将增加什么功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具无法完成的。某些工具会产生臃肿得可怕的程序。
Ø移植性:因为创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。
6.3.4游戏引擎简介
人们常把游戏的引擎比作赛车的引擎。引擎是赛车的心脏,决定着赛车的性能和稳定性,赛车的速度、操纵感这些直接与车手相关的指标都是建立在引擎的基础上的。游戏也是如此。
引擎是用于控制所有游戏功能的主程序。其主要功能包括从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。
目前,游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节。
游戏引擎主要包括:
(1)图形引擎
图形引擎主要包含游戏中的场景(室内或室外)管理与渲染,角色的动作管理绘制,特效管理与渲染(粒子系统,自然模拟,如水纹,植物等模拟),光照和材质处理,级别对象细节(Level Object Detail,LOD)管理等。
(2)声音引擎
声音引擎功能主要包含音效、语音、背景音乐等的播放。音效是指游戏中及时无延迟的频繁播放,且播放时间比较短的声音。
(3)物理引擎
物理引擎是指包含在游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟, 以及发生碰撞后的物体骨骼运动的力学模拟。较著名的物理引擎有黑维克(havok)公司的游戏动态开发包(game dynamics sdk),还有开放源代码(opensource)的开放动态引擎(Open Dynamics Engine,ODE)。
(4)数据输入输出处理
数据输入输出处理负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其它外设的信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。