《OpenGL游戏程序设计》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)K. 霍金,(美)D. 阿斯特著;田昱川译
  • 出 版 社:北京:科学出版社
  • 出版年份:2006
  • ISBN:7030166167
  • 页数:550 页
图书介绍:本书是首次将OpenGL和DirectX结合起来游戏编程的图书,书中列举了大量的实例。

第1篇 OpenGL和DirectX的介绍 1

第1章 而今迈步从头越——OpenGL和DirectX 1

1.1 开发游戏需要理由吗 1

1.2 3D游戏世界 1

1.3 游戏的元素 2

1.4 开发工具 4

1.5 什么是OpenGL 5

1.5.1 OpenGL的历史 6

1.5.2 OpenGL的体系结构 6

1.5.4 什么是GLUT 7

1.5.3 OpenGL实用库 7

1.5.5 轻松一瞥 8

1.6 什么是DirectX 8

1.6.1 DirectX的历史 9

1.6.2 DirectX体系结构 9

1.7 OpenGL与DirectX 11

本章小结 12

第2章 Windows操作系统平台上的OpenGL编程 13

2.1 Windows编程介绍 13

2.1.1 Windows应用程序基础 15

2.1.2 从WinMain()开始 15

2.1.3 Windows Procedure 16

2.1.4 窗口类 17

2.1.5 窗口类的注册 20

2.1.6 窗口的创建 21

2.1.7 消息循环 23

2.1.8 一个完整的Windows应用程序 24

2.2 WGL介绍 28

2.2.1 绘制环境 28

2.2.2 WGL的使用 29

2.3 像素格式 30

2.3.2 dwFlags 31

2.3.1 nSize 31

2.3.3 iPixelType 32

2.3.4 cColorBits 32

2.4 OpenGL Windows应用程序 33

2.5 全屏OpenGLL 40

本章小结 41

第3章 3D图形学理论概览 43

3.1 标量、点和矢量 43

3.1.1 矢量的大小 44

3.1.2 矢量的归一化 44

3.1.3 矢量加法运算 44

3.1.6 叉积运算 45

3.1.5 点积运算 45

3.1.4 矢量与标量的乘法运算 45

3.2 矩阵 46

3.2.1 单位矩阵 46

3.2.2 零矩阵 47

3.2.3 矩阵加法和减法运算 47

3.2.4 矩阵乘法运算 47

3.2.5 矩阵的总体实现 49

3.3 变换 51

3.3.1 平移变换 51

3.3.2 旋转变换 52

3.3.3 缩放变换 53

3.4 投影 54

3.4.1 平行投影 55

3.4.2 透视投影 55

3.5 3D剪裁 57

3.6 光照 58

3.6.1 环境光 58

3.6.2 散射光 58

3.6.3 镜面反射光 59

3.7 纹理映射 59

本章小结 60

4.1 状态函数 61

第4章 OpenGL状态和图元 61

第2篇 使用OpenGL 61

4.2 图元的处理 67

4.2.1 3D空间中点的绘制 68

4.2.2 3D空间中线的绘制 70

4.2.3 3D空间中的多边形的绘制 72

4.2.4 图元的使用 76

本章小结 76

第5章 坐标变换和OpenGL矩阵 77

5.1 理解坐标变换 77

5.1.1 视点和眼坐标 78

5.1.2 视图变换 79

5.1.3 模型变换 82

5.1.4 投影变换 83

5.1.5 视区变换 84

5.2 OpenGL和矩阵 84

5.2.1 模型视图矩阵 84

5.2.2 平移变换 85

5.2.3 旋转变换 86

5.2.4 缩放变换 86

5.2.5 矩阵堆栈 87

5.2.6 机器人例程 89

5.3.1 正交投影变换 99

5.3 投影变换 99

5.3.2 透视投影变换 100

5.3.3 视区的设置 101

5.3.4 投影变换实例 101

5.4 自定义矩阵的使用 103

5.4.1 自定义矩阵的载入 103

5.4.2 矩阵的乘法运算 104

5.4.3 自定义矩阵的实例 104

本章小结 105

第6章 添加颜色、混合与光照 106

6.1 颜色是如何工作的 106

6.2.1 颜色深度 107

6.2 在OpenGL中使用颜色 107

6.2.2 颜色立方体模型 108

6.2.3 OpenGL中的RGBA模式 108

6.2.4 OpenGL中的颜色索引模式 109

6.3 明暗处理 110

6.4 OpenGL中的光照 111

6.4.1 OpenGL光照和现实世界 111

6.4.2 材质 112

6.4.3 法线 112

6.4.4 OpenGL光照的使用 116

6.5 颜色混合 136

透明度 137

本章小结 142

第7章 位图、图像与OpenGL 143

7.1 OpenGL位图 143

7.1.1 位图的定位 144

7.1.2 位图的绘制 144

7.1.3 一个OpenGL位图例程 145

7.2 图像的使用 147

7.2.1 图像数据的绘制 147

7.2.2 屏幕的读取 148

7.3 像素存储的管理 149

7.2.4 放大、缩小和翻转 149

7.2.3 屏幕数据的复制 149

7.4 Windows位图 150

7.4.1 BMP文件格式 150

7.4.2 BMP文件的载入 151

7.4.3 BMP文件的输出 152

7.5 Targa图像文件 154

7.5.1 Targa文件格式 154

7.5.2 Targa文件的载入 155

7.5.3 Targa文件的输出 156

本章小结 158

8.1 纹理映射的概览 160

第8章 纹理映射 160

8.2 纹理图的应用 166

8.2.1 2D纹理 166

8.2.2 1D纹理 166

8.2.3 3D纹理 167

8.3 纹理对象 167

8.3.1 纹理名字的生成 167

8.3.2 纹理对象的创建和使用 168

8.4 纹理的过滤处理 168

8.6 纹理坐标 169

8.5 纹理模式 169

8.6.1 重复和夹持纹理 170

8.6.2 mipmap和细节层次 172

8.6.3 mipmap的自动生成 173

8.7 例程——飘动的旗帜 173

8.7.1 例程的解释说明 173

8.7.2 例程的实现 174

8.8 例程——高程纹理地形 184

8.8.1 例程的解释说明 184

8.8.2 例程的实现 188

本章小结 196

9.1 多纹理映射 197

第9章 高级纹理映射 197

9.1.1 多纹理支持的验证 198

9.1.2 扩展函数的访问 199

9.1.3 纹理单元的建立 199

9.1.4 纹理坐标的设置(指定) 201

9.1.5 综合应用 202

9.2 环境映射 210

9.3 纹理矩阵 213

9.4 光照映射 215

9.5 多通道多纹理映射 221

本章小结 225

第10章 显示列表与顶点数组 226

10.1 显示列表 226

10.1.1 显示列表的创建 227

10.1.2 向显示列表中填充命令 227

10.1.3 显示列表的执行 228

10.1.4 显示列表的注意事项 229

10.1.5 显示列表的销毁 229

10.1.6 显示列表与纹理 230

10.1.7 例程:使用显示列表的机器人演示程序 231

10.2 顶点数组 232

10.2.1 顶点数组的启用 233

10.2.2 数组的使用 234

10.2.3 顶点数组与多纹理映射 236

10.2.4 数组的锁定 237

10.2.5 例程:再建地形演示程序 237

本章小结 240

第11章 文本的显示 241

11.1 位图字体 241

11.2 轮廓字体 245

11.3 纹理映射字体 248

本章小结 254

12.1.1 像素格式的设置 256

第12章 OpenGL缓存 256

12.1 什么是OpenGL缓存 256

12.1.2 缓存的清理 259

12.2 颜色缓存 259

12.2.1 双缓存系统 260

12.2.2 立体缓存 260

12.3 深度缓存 261

12.3.1 深度比较程序 261

12.3.2 深度缓存的使用 261

12.4 模板缓存 271

12.5 累积缓存 279

本章小结 280

第13章 OpenGL二次曲面 282

13.1 OpenGL二次曲面的基础 282

13.1.1 绘制风格 283

13.1.2 法线 283

13.1.3 指向 283

13.1.4 纹理坐标 283

13.1.5 清理 284

13.2 圆盘 284

13.3 圆柱 285

13.4 球 286

13.5 例程:飞掠一个二次世界 287

本章小结 290

第14章 曲线与曲面 291

14.1 曲线与曲面的描述 291

14.1.1 参数方程 292

14.1.2 控制点与连续性 292

14.2 求值程序 293

14.3 曲面 297

14.4 NURBS 303

本章小结 307

15.1 标志板 309

第15章 特殊效果 309

15.2 粒子系统的使用 312

15.2.1 粒子 313

15.2.2 粒子系统 315

15.2.3 粒子系统管理器 318

15.2.4 实例 318

15.2.5 粒子系统的效果 321

15.2.6 例程:暴风雪 322

15.3 雾 326

15.3.1 OpenGL的雾 326

15.3.2 体积雾 327

15.4 镜像 328

15.4.1 光照的镜像 328

15.4.2 深度缓存的处理 328

15.4.3 使用模板缓存来处理有限的平面 329

15.4.4 对于非常规镜像表面的处理 330

15.4.5 对任意指向的平面的处理 330

15.5 阴影 331

15.5.1 静态阴影 331

15.5.2 投射阴影 332

15.5.3 模板阴影体 334

15.5.5 例程:镜像与阴影 335

15.5.4 其他的方法 335

本章小结 338

第3篇 建立一个游戏 339

第16章 DirectX的使用:Directlnput 339

16.1 为什么要使用DirectInput 339

16.1.1 Windows消息 339

16.1.2 Win32 341

16.1.3 DirectInput 343

16.2 DirectInput的初始化 344

16.3 DirectInput的使用 345

16.3.1 设备的添加 346

16.3.2 输入的获取 353

16.3.3 关闭 354

16.4 动作映射 355

16.5 输入子系统的建立 355

16.6 输入系统例程 364

本章小结 366

第17章 DirectX Audio的使用 367

17.1 声音的基础 367

17.2 什么是DirectX Audio 370

17.2.1 DirectX Audio的功能部件 371

17.2.2 音频数据流 373

17.3 使用DirectMusic加载和演奏音频 374

17.3.2 创建与初始化演奏对象 375

17.3.1 初始化COM 375

17.3.3 创建loader对象 376

17.3.4 载入一个segment对象 376

17.3.5 下载波段 377

17.3.6 演奏segment 377

17.3.7 停止一个segment的播放 378

17.3.8 segment是否正在播放 378

17.3.9 segment循环的控制 379

17.3.10 清理 379

17.4 一个简单的例程 380

17.5.1 默认的Audiopath 391

17.5 Audiopath的使用 391

17.5.2 标准Audiopath 392

17.5.3 在Audiopath上播放声音 392

17.5.4 从Audiopath获取对象 394

17.6 3D声音 394

17.6.1 3D声音坐标 395

17.6.2 感知 395

17.6.3 DirectSound 3D缓存 395

17.6.4 3D参数的设置 396

17.6.5 DirectSound 3D听者 398

17.6.6 3D音效文本例程 399

本章小结 412

第18章 3D模型的处理 414

18.1 3D模型文件格式 414

18.2 MD2文件格式 415

18.2.1 MD2的实现 417

18.2.2 MD2的载入 421

18.2.3 MD2的显示 425

18.2.4 添加纹理 427

18.2.5 模型的动画 429

18.2.6 开发一个CMD2Model类 434

18.2.7 模型动画的控制 445

18.3 最后的一点小资料 448

本章小结 452

第19章 OpenGL物理建模 453

19.1 物理学的回顾 453

19.1.1 时间 453

19.1.2 距离、位移和位置 454

19.1.3 速度 456

19.1.4 加速度 457

19.1.5 作用力 458

19.1.6 动量 459

19.1.7 摩擦力 461

19.2 真实世界的模拟 463

19.2.2 定时 464

19.2.1 任务的分解 464

19.2.3 矢量 469

19.2.4 平面 474

19.2.5 物体 478

19.2.6 物体碰撞的处理 480

19.2.7 一个例程:空中曲棍球 486

本章小结 509

第20章 建立一个游戏引擎 510

20.1 SimpEngine的设计 510

20.1.1 利用CNode管理数据 511

20.1.2 对象的处理:CObject 515

20.2 引擎核 520

20.2.1 输入系统 522

20.2.2 CEngine类 523

20.2.3 游戏循环 524

20.2.4 输入的处理 525

20.2.5 SimpEngine 526

20.3 视点 527

20.4 场景 530

20.5 模型的添加 530

20.6 音频系统 531

20.7 粒子系统 533

本章小结 534

第21章 创建一个游戏:杀戮时刻 535

21.1 初始设计 535

21.2 游戏场景 535

21.3 敌人 538

21.4 火箭与爆炸 542

21.5 用户的交互 543

21.6 运行游戏 544

21.7 建立EXE可执行文件 544

本章小结 545

A.1 游戏开发 546

附录A 在线资源 546

第4篇 附录 546

A.2 OpenGL 547

A.3 DirectX 547

A.4 其他的资源 548

附录B 随书所附资料的使用 549

B.1 用户界面 549

B.2 文件结构 549

B.3 系统要求 549

B.4 安装 549

B.5 其他相关问题与疑难解答信息 550

B.6 是否仍旧需要帮助 550