《OpenGL图形程序设计指南》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:尚游,陈岩涛编著
  • 出 版 社:北京市:中国水利水电出版社
  • 出版年份:2001
  • ISBN:750840839X
  • 页数:460 页
图书介绍:

前言 1

第1章 OpenGl入门 1

1.1 OpenGL概览 1

1.2 简单的OpenGL程序举例 3

1.3 基本OpenGL操作 5

1.4 OpenGL的命令语法 6

1.5 作为状态机的OpenGL 7

1.6 OpenGL相关函数库 8

1.6.1 OpenGL相关函数库简介 8

1.6.2 OperGL辅助库(GLAUX) 9

4.8.1 建立一个太阳系模型 9

1.7 动画 11

7.1.1 发射光,环境光,散射光和镜面反射光 13

2.1.1 系统硬件配置要求 17

2.1 开发环境 17

第2章 Windows 95及Windows NT环境下开发OpebGL应用程序的基本过程 17

2.1.2 开发OpenGL应用程序的软件要求 17

2.2.2 Win32控制台风格应用程序的开发 18

2.2 OpenGL应用程序开发基本过程 18

2.2.1 源代码的编写 18

2.2.3 Win32MFC风格应用程序的开发 22

第3章 实体建模基础 24

3.1 一个绘图补救工具包 24

3.1.1 清除窗口 25

3.1.2 指定颜色 27

3.1.3 完成绘图 28

3.1.4 隐藏面的消除 29

3.2 点、线和多边形的描述 30

3.2.1 点、线和多边形的定义 30

3.2.2 定义顶点 33

3.2.3 OpenGL的几何绘图图元 34

3.2.4 使用glBegin()和glEnd()的限制 37

3.3 显示点、线和多边形 38

3.3.1 关于点的细节 38

3.3.2 关于线的细节 39

3.3.3 关于多边形的细节 43

3.4 法线向量 49

3.5 创建表面的多边形模型需注意的问题 51

第4章 视图 59

4.1 概述:照相机类比法 60

4.1.1 照相机类比法及其在计算机中的实现 60

4.1.2 一个简单的例子:绘制立方体 62

4.1.3 多种用途的变换函数 66

4.2 视图变换和模型变换 67

4.2.1 关于变换的说明 68

4.2.2 模型变换 70

4.2.3 视图变换 74

4.3 投影变换 78

4.3.1 透视投影 78

4.3.2 正交投影 80

4.4.1 定义视区 82

4.4 视区变换 82

4.3.3 视图体的裁剪 82

4.4.2 变换后的Z坐标 84

4.5 变换的诊断 84

4.6 矩阵堆栈的操作 86

4.6.1 模型视图矩阵堆栈 88

4.6.2 投影矩阵堆栈 88

4.7 附加裁剪平面 89

4.8 组合变换举例 92

4.8.2 建立一个有关节的机器人手臂模型 95

第5章 显示列表 100

5.1 一个使用显示列表的范例 100

5.2 显示列表设计准则 102

5.3 显示列表的创建和执行 104

5.3.1 显示列表的存储内容 106

5.3.2 执行显示列表 107

5.3.3 显示列表的层次结构 109

5.4 显示列表及其索引的管理 110

5.5 执行多个显示列表 111

5.6 封装模式的改变 117

第6章 颜色 119

6.1 颜色的感知 119

6.2 计算机的颜色 120

6.3 RGBA模式与颜色索引模式 122

6.3.1 RGBA模式与颜色索引模式的对比 122

6.3.2 RGBA显示模式 123

6.3.3 抖动操作 123

6.3.4 颜色索引显示模式 125

6.3.5 在RGBA模式与颜色索引模式之间进行选择 126

6.4 指定颜色和阴影模型 126

6.4.1 在RGBA模式下指定颜色 127

6.4.3 指定阴影模型 128

6.4.2 在指定颜色索引模式下指定颜色 128

第7章 光照 132

7.1 真实世界与OpenGL光照 133

7.1.2 材料颜色 134

7.1.3 光线与材质的RGB值 134

7.2 一个简单的例子:光照球体的渲染 135

7.2.1 为所有的物体顶点定义法线向量 137

7.2.2 创建,定位和激活一个或多个光源 137

7.2.3 选择光照模型 137

7.2.4 定义场景中物体的材质属性 137

7.3 创建光源 138

7.2.5 一些重要说明 138

7.3.1 颜色 139

7.3.2 定位和衰减 140

7.3.3 聚光灯 140

7.3.4 多光源 141

7.3.5 控制光源的位置与方向 142

7.4 选择光照模型 147

7.4.1 全局环境光 147

7.4.2 局部或无穷远的视点 147

7.5 材料属性的定义 148

7.4.3 双面光照 148

7.4.4 激活光照 148

7.5.1 散射和环境光反射 150

7.5.2 镜面反射 150

7.5.3 发射光颜色 151

7.5.4 改变材质属性 151

7.6 光照的数学计算 156

7.6.3 光源的贡献 157

7.6.4 聚光灯效果 157

7.6.2 放大的全局环境光 157

7.6.1 材质的发射光 157

7.6.5 环境光项 158

7.6.6 散射光项 158

7.6.7 镜面反射光项 158

7.6.8 求和 159

7.6.9 颜色索引模式下的光照 159

7.6.10 颜色索引模式下光照的数学计算 160

第8章 混合、反走样、雾 161

8.1 混合 161

8.1.1 源因子和目标因子 162

8.1.2 混合的简单使用 163

8.1.3 混合操作范例 164

8.1.4 具有深度缓存的三维混合 167

8.2 反走样 171

8.2.1 点和线的反走样 173

8.2.2 多边形的反走样 178

8.3 雾 182

8.3.1 雾的使用 182

8.3.2 雾的方程 186

9.1 位图和字体 191

第9章 绘制像素、位图、字体和图像 191

9.1.1 当前光栅位置 194

9.1.2 绘制位图 195

9.1.3 字体和显示列表 196

9.1.4 一个完整的字体定义和使用 197

9.2 图像 203

9.2.1 像素数据的读、写和拷贝 203

9.2.2 图像的放大与缩小 206

9.3 像素的存储、变换和映射 206

9.3.1 像素模式概论 206

9.3.2 像素存储控制模式 207

9.3.3 像素传递操作 209

9.3.4 像素矩形 210

9.3.5 像素读取过程详解 212

9.3.6 像素映射 213

第10章 纹理映射 215

10.1 概述及范例 217

10.1.1 纹理映射的步骤 217

10.1.2 一个简单的程序 218

10.2 指定纹理 221

10.2.2 细节等级(Level of Details) 222

10.2.1 使用纹理边界 222

10.2.3 控制过滤 228

10.2.4 一维纹理 230

10.3 调节和混合 230

10.4 分配纹理坐标 232

10.4.1 计算纹理坐标 232

10.4.2 纹理的重复和截取 233

10.5 自动纹理坐标生成 235

10.5.1 创建轮廓 236

10.5.2 环境映射 239

10.6.1 纹理矩阵堆栈 240

10.6 高级特性 240

10.6.2 纹理的q坐标 241

第11章 帧缓存 242

11.1 缓存及其使用 243

11.1.1 各种缓存概述 244

11.1.2 清空缓存 245

11.1.3 为写操作选择颜色缓存 246

11.1.4 缓存屏蔽 246

11.2 片原的测试与操作 247

11.2.2 alpha测试 248

11.2.1 剪取测试 248

11.2.3 模板测试 249

11.2.4 深度测试 254

11.2.5 混合,抖动及逻辑操作 255

11.3 累积缓存 257

11.3.1 场景反走样 257

11.3.2 运动模糊度 269

11.3.3 景深 270

11.3.4 柔和阴影 276

11.3.5 抖动 276

12.1 概述 278

第12章 求值程序和非均匀有理B样要(NURBS) 278

12.2 求值程序 279

12.2.1 一维求值程序 279

12.2.2 二维求值程序 284

12.3 GLU的NURBS接口程序 296

12.3.1 简单的NURBS范例 296

12.3.2 修剪 302

第13章 选择机制 306

13.1 选择 306

13.1.2 创建命名堆栈 307

13.1.1 基本步骤 307

13.1.3 选中记录 309

13.1.4 一个选择的实例 309

13.1.5 拾取 314

13.1.6 用多个命名和分层模型进行拾取 320

13.1.7 拾取和深度值 322

13.1.8 在编程中使用选择机制的一些提示 326

13.2 反馈 327

13.2.1 反馈数组 328

13.2.2 在反馈模式下使用标记 329

13.2.3 一个反馈的例子 330

第14章 OpenGL应用及提高应用程序性能的技巧 335

14.1 轻松制作透明物体 336

14.2 轻松实现淡出效果 337

14.3 利用后缓存进行物体选择 337

14.4 方便的图像变换 338

14.5 分层显示 339

14.6 字符反走样 340

14.7 绘制圆形的点 342

14.8 插入图像 342

14.9 制作贴花 342

14.10 用模板缓存绘制填充的凹多边形 343

14.11 确定重叠区域 344

14.12 阴影 345

14.13 消除隐藏线 345

14.14 纹理映射的应用 346

14.15 绘制深度缓存图像 347

14.16 笛里希累(Dinrichlet)域 347

14.17 生命游戏(Life Game) 348

14.18 交替使用glDrawPixelsO和glCopyPixelsO 349

第15章 高级应用(一):OpenGL与AutoCAD的图形接口 351

15.1 AutoCAD简介 351

15.2.1 DXF文件的基本结构 352

15.2 DXF文件分析 352

15.2.2 实体段分析 354

15.3 DXF接口程序的编写 356

15.4 OpenGL的DXF扩展库函数的制作 362

15.5 高级应用实例 363

第16章 高级应用(二):三维随机分形地形的生成 372

16.1 分形的基本原理 372

16.1.1 自相似 373

16.1.2 一维中点变换 373

16.1.3 Diamond-Square算法 376

16.1.4 蓝天白云的生成 380

16.2 分形地形生成实例 381

16.2.1 程序的运行 381

16.2.2 代码结构分析 382

附录1 OpenGL中的操作顺序 405

附1.1 概述 405

附1.2 几何操作 406

附1.2.1 顶点操作 406

附1.2.2 图元装配 406

附1.5 补充说明 407

附1.3 像素操作 407

附1.4 片元操作 407

附录2 OpenGL状态变量 409

附2.1 查询命令 409

附2.2 出错处理 410

附2.3 状态变量的保存和恢复 411

附2.4 OpenGL的状态变量 412

附2.4.1 当前值和相关数据 413

附2.4.2 变换 413

附2.4.3 颜色 414

附2.4.4 光照 414

附2.4.6 纹理 416

附2.4.5 光栅化 416

附2.4.7 像素操作 417

附2.4.8 帧缓存控制 418

附2.4.9 像素 419

附2.4.10 求值程序 420

附2.4.11 提示 420

附2.4.12 依赖执行的值 420

附2.4.13 像素深度 422

附2.4.14 混合 422

附3.1 纹理映射中的图像操作 423

附录3 OpenGL实用库 423

附3.2 变换坐标 424

附3.3 多边形网格化 425

附3.4 回调机制 425

附3.5 网格化物体 425

附3.6 指定回调函数 426

附3.7 描述网格化多边形 427

附3.8 渲染球体、圆柱和圆盘 428

附3.9 NURBS曲线和曲面 429

附3.10 错误的描述 430

附4.2 控制渲染 431

附4.2.1 管理OpenGL渲染内容 431

附录4 OpenGL对X窗口系统的扩展 431

附4.1 初始化 431

附4.2.2 后台渲染 432

附4.2.3 同步执行 432

附4.2.4 交换缓存 432

附4.2.5 使用X字体 432

附4.3 GLX库函数原型 432

附5.1 初始化及退出窗口 434

附录5 OpenGL辅助库 434

附5.3 装载颜色图 435

附5.4 初始化和绘制三维物体 435

附5.2 处理窗口和输入事件 435

附5.5 管理后台进程 437

附5.6 运行程序 437

附录6 计算法线向量 438

附6.1 为解析表面确定法线 438

附6.2 由多边形数据确定法线 440

附7.2 变换 442

附7.2.1 顶点变换 442

附7.1 齐次坐标 442

附录7 齐次坐标与变换矩阵 442

附7.2.2 法线变换 443

附7.2.3 变换矩阵 443

附录8 OpenGL编程要点 446

附8.1 OpenGL正确编程技巧 446

附8.2 提高OpenGL程序性能 447

附8.3 GLX的技巧 448

附录9 OpenGL的不变性 449

B 450

附录10 术语表 450

A 450

C 451

D 452

E 453

F 453

G 454

H 455

I 455

N 456

L 456

M 456

O 457

P 457

R 458

S 458

T 459

V 459

X 460