第一章 DirectX入门 1
1.1 DirectX和部件对象模型COM 2
1.1.1 部件对象模型COM(Component Object Model) 2
1.1.2 IUnknown接口 2
1.1.3 DirectX COM接口 3
1.1.4 C++和COM接口 3
1.1.5 新接口的获取 3
1.1.6 用C语言访问COM对象 4
1.2.2 Direct3D 5
1.2.4 DirectPlay 5
1.2.3 DirectSound 5
1.2.1 DirectDraw 5
1.2 DirectX5的基本组成 5
1.2.5 DirectInput 6
1.2.6 DirectSetup 6
第二章 高性能图形接口——DirectDraw 7
2.1 DirectDraw的基本图像概念 8
2.1.1 设备无关性位图DIB(Device-Independent Bitmap) 8
2.1.2 绘图表面(Drawing Surface) 9
2.1.3 位块传输Blit 9
2.1.4 页面翻转(Page Flipping)和后台缓冲(Back Buffering) 9
2.1.5 矩形(Rectangle) 10
2.1.6 精灵(Sprite) 10
2.2 DirectDraw的体系结构 11
2.2.2 硬件抽象层HAL(Hardware Abstraction Layer) 12
2.2.1 DirectDraw的对象类型 12
2.2.3 软件仿真(Software Emulation) 13
2.2.4 系统组成(System Integration) 13
2.3 DirectDraw的组成要素 13
2.3.1 协作等级(Cooperative Level) 14
2.3.2 显示模式(Display Modes) 14
2.3.3 DirectDraw对象 16
2.3.4 表面(Surface) 19
2.3.5 调色板(Palette) 29
2.3.6 剪切板(Clipper) 30
2.4 DirectDraw高级特性 33
2.4.1 直接内存访问DMA 33
2.4.2 在窗口模式下使用DirectDraw调色板 34
2.4.3 多显示器系统 37
2.4.4 视频端口(Video Ports) 38
2.4.5 获取翻转和位块传输状态 40
2.4.6 检测显示硬件的能力 41
2.4.7 在显示内存中存储位图 41
2.4.8 三缓冲(Triple Buffering) 41
2.4.9 DirectDraw应用程序和窗口风格 42
2.5 DirectDraw例程 44
2.5.1 配置DirectX SDK 44
2.5.2 第一个DirectDraw实例 48
2.5.3 创建动画 60
2.5.4 使用覆盖表面 63
3.1.2 设备(Device) 72
3.1.1 动画(Animation) 72
3.1 Direct3D中的基本概念 72
第三章 变幻莫测的三维造——Direct3D 72
3.1.3 颜色模式 73
3.1.4 面 73
3.1.5 帧 73
3.1.6 框架 73
3.1.7 灯光 73
3.1.8 材质 73
3.1.9 阴影 73
3.1.10 纹理 74
3.1.11 用户可视对象 74
3.1.12 视点 74
3.1.13 扭曲 74
3.1.16 三维变换 75
3.1.17 多边形 75
3.1.14 三维坐标系统 75
3.1.15 u坐标和v坐标 75
3.1.18 三角形插值 76
3.1.19 三角形链和扇形 77
3.1.20 矢量、节点和四元组 77
3.2 Direct3D保留模式的体系结构 77
3.3 对象和接口 78
3.3.1 对象和索引值 80
3.3.2 Z缓冲区 80
3.3.3 IDirect3DRM和IDirect3DRM2接口 80
3.3.5 IDirect3DRMDevice, IDirect3DRMDevice2和IDirect3DRMDeviceArray接口 81
3.3.4 IDirect3DRMAnimation和IDirect3DRMAnimationSet接口 81
3.3.7 IDirect3DRMFrame, IDirect3DRMFrame2和IDirect3DRMFrameArray接口 83
3.3.6 IDirect3DRMFace和IDirect3DRMFaceArray接口 83
3.3.8 IDirect3DRMInterpolator接口 84
3.3.9 IDirect3DRMLight和IDirect3DRMLightArray接口 87
3.3.10 IDirect3DRMMaterial接口 89
3.3.11 IDirect3DRMMesh, IDirect3DRMMeshBuilder和IDirect3DRMMeshBuilder2接口 89
3.3.12 Direct3DRMObject对象 90
3.3.13 IDirect3DRMPickedArray和IDirect3DRMPicked2Array接口 90
3.3.14 IDirect3DRMProgressiveMesh接口 90
3.3.15 IDirect3DRMShadow接口 91
3.3.16 IDirect3DRMTexture和IDirect3DRMTexture2接口 91
3.3.19 IDirect3DRMVisual和IDirect3DRMVisualArray接口 92
3.3.20 IDirect3DRMWrap接口 92
3.3.17 IDirect3DRMUserVisual接口 92
3.3.18 IDirect3DRMViewport和IDirect3DRMViewportArray接口 92
3.4 Direct3D保留模式例程 93
3.4.1 建立Hello World 93
3.4.2 预定义和全局变量 94
3.4.3 窗口设置和初始化 96
3.4.4 查找设备驱动程序 102
3.4.5 设置3D环境 107
3.4.6 着色循环 109
3.4.7 创建场景 110
4.1 DirectSound的体系结构 119
第四章 多姿多彩的声音世界——DirectSound 119
4.1.1 回放(Playback) 120
4.1.2 捕获(Capture) 120
4.1.3 属性集(Property Sets) 120
4.1.4 硬件抽象层和硬件仿真层 121
4.1.5 系统组成 121
4.2 DirectSound的基本要素 122
4.2.1 DirectSound设备 122
4.2.2 DirectSound缓冲区 126
4.2.3 3D声音 136
4.2.4 DirectSound 3D缓冲区 139
4.2.5 DirectSound 3D听众 141
4.2.6 DirectSound声音捕获 142
4.2.7 优化声音特性 147
第五章 合作与对抗——DirectPlay 150
5.1 编写网络程序 150
5.2 DirectPlay概述 151
5.2.1 DirectPlay的体系结构 151
5.2.2 会话管理 152
5.2.3 Player管理 153
5.2.4 消息管理 153
5.2.5 组管理 154
5.2.6 DirectPlay通信 155
5.3 DirectPlay Lobby 158
5.3.2 Lobby会话 159
5.3.1 DirectPlay Lobby的结构 159
5.3.3 Lobby漫游 161
5.3.4 同步启动 161
5.4 DirectPlay提供者 161
5.4.1 服务提供者 162
5.4.2 Lobby提供者 163
5.5 使用DirectPlay 163
5.5.1 DirectPlay接口 163
5.5.2 使用回调函数 164
5.5.3 建立Lobby应用程序 165
5.5.4 DirectPlay消息 167
5.5.5 DirectPlay地址 169
5.5.6 DirectPlay工具与范例 171
5.5.7 安全与认证 173
5.6 DirectPlay接口 175
5.6.1 IDirectPlay接口 175
5.6.2 IDirectPlay2接口 176
5.6.3 IDirectPlay3接口 176
5.6.4 IDirectPlayLobby和IDirectPlayLobby2接口 176
5.7 DirectPlay例程 176
5.7.1 使用Lobby建立连接 177
5.7.2 使用对话框连接 179
5.7.3 屏蔽服务提供者对话框 184
5.7.4 创建自刷新会话列表 188
6.1 DirectInput的结构 192
6.1.1 DirectInput对象 192
第六章 灵活的交互方式——DirectInput 192
6.1.2 DirectInputDevice对象 193
6.1.3 DirectInput设备对象实例 193
6.1.4 DirectInputEffect对象 193
6.1.5 与操作系统的集成 193
6.2 DirectInput的组成 194
6.2.1 DirectInput设备查询 194
6.2.2 DirectInput设备 195
6.2.3 DirectInput设备数据 202
6.2.4 力反馈设备 210
6.3 DirectInput键盘程序设计 225
6.3.1 创建DirectInput对象 225
6.3.3 设置键盘数据格式 226
6.3.2 创建DirectInput键盘设备 226
6.3.4 设置键盘程序的协作等级 227
6.3.5 访问键盘 227
6.3.6 从键盘获取数据 227
6.3.7 关闭DirectInput系统 228
6.4 DirectInput鼠标程序设计 231
6.4.1 创建DirectInput鼠标设备 231
6.4.2 设置鼠标数据格式 231
6.4.3 设置鼠标的行为 232
6.4.4 设置鼠标输入缓冲区 232
6.4.5 管理对鼠标的访问 234
6.4.6 获取缓冲数据 234
6.5.2 创建操纵杆设备 237
6.5 DirectInput操纵杆程序设计 237
6.5.1 查询操纵杆设备 237
6.5.3 设置操纵杆数据格式 238
6.5.4 设置操纵杆的行为 239
6.5.5 访问操纵杆 240
6.5.6 获取操纵杆输入数据 241
6.6 DirectInput力反馈设备程序设计 243
6.6.1 查询力反馈设备 243
6.6.2 创建力反馈设备 244
6.6.3 查询设备支持的效果 246
6.6.4 创建效果 247
6.6.5 执行效果 249
6.6.6 改变效果 249
7.1 DirectXSetup的安装过程 251
第七章 简便易行的安装——DirectSetup 251
7.2 使用回调函数定制安装 252
7.3 安装程序的设计 255
7.4 测试安装程序 257
第八章 自动运行的捷径--AutoPlay 258
第九章 DirectX 6的新特性 262
9.1 DirectDraw 6.0 262
9.1.1 IdirectDraw 4接口 262
9.1.2 获取IDirectDrawSurface4接口 263
9.1.3 创建DirectDraw对象 263
9.2 Direct3D6 264
9.3 DirectPlay6 265