《OPENGL编程指南 原书第5版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)DAVE SHREINER MASON WOO JACKIE NEIDER TOM DAVIS著;徐波等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2006
  • ISBN:7111188888
  • 页数:513 页
图书介绍:本书介绍OpenGL功能及技巧。

译者序 1

前言 1

第1章 OpenGL简介 1

1.1 什么是OpenGL 1

目录 1

1.2 一段简单的OpenGL代码 3

1.3 OpenGL函数的语法 4

1.4 OpenGL是个状态机 6

1.5 OpenGL渲染管线 6

1.5.3 基于顶点的操作 7

1.5.4 图元装配 7

1.5.1 显示列表 7

1.5.2 求值器 7

1.5.5 像素操作 8

1.5.6 纹理装配 8

1.5.7 光栅化 8

1.5.8 片断操作 8

1.6 OpenGL相关的函数库 8

1.6.1 包含文件 9

1.6.2 GLUT,OpenGL实用工具包 10

1.7 动画 13

1.7.1 暂停刷新 14

1.7.2 动画=重绘+交换 15

第2章 状态管理和绘制几何物体 17

2.1 绘图工具箱 18

2.1.1 清除窗口 18

2.1.2 指定颜色 20

2.1.3 强制完成绘图操作 21

2.1.4 坐标系统工具箱 22

2.2.1 什么是点、直线和多边形 23

2.2 描述点、直线和多边形 23

2.2.2 指定顶点 25

2.2.3 OpenGL几何绘图图元 26

2.3 基本状态管理 30

2.4 显示点、直线和多边形 31

2.4.1 点的细节 31

2.4.2 直线的细节 31

2.4.3 多边形的细节 35

2.5 法线向量 40

2.6 顶点数组 41

2.6.1 步骤1:启用数组 42

2.6.2 步骤2:指定数组的数据 43

2.6.3 步骤3:解引用和渲染 45

2.6.4 混合数组 50

2.7 缓冲区对象中的顶点数组 52

2.7.1 利用缓冲区对象存储顶点数据 53

2.7.2 为顶点数据创建缓冲区对象 53

2.7.3 激活缓冲区对象 53

2.7.4 用顶点数据分配和初始化缓冲区对象 54

2.7.5 更新缓冲区对象中的数据值 57

2.8 属性组 58

2.7.6 清除缓冲区对象 58

2.9 关于构建多边形表面模型的一些提示 60

第3章 视图 66

3.1 总览:照相机比喻 67

3.1.1 一个简单的例子:绘制立方体 69

3.1.2 通用的变换函数 72

3.2 视图和模型变换 73

3.2.1 对变换进行思考 74

3.2.2 模型变换 76

3.2.3 视图变换 79

3.3.1 透视投影 84

3.3 投影变换 84

3.3.2 正投影 86

3.3.3 可视空间裁剪 86

3.4 视口变换 87

3.4.1 定义视口 87

3.4.2 变换深度坐标 88

3.5 和变换相关的故障排除 88

3.6 操纵矩阵堆栈 90

3.6.2 投影矩阵堆栈 92

3.6.1 模型视图矩阵堆栈 92

3.7 额外的裁剪平面 93

3.8 一些组合变换的例子 95

3.8.1 创建太阳系模型 95

3.8.2 创建有关节的机器人手臂 97

3.9 逆变换和模拟变换 100

第4章 颜色 104

4.1 颜色感知 104

4.2 计算机颜色 105

4.3.1 RGBA显示模式 107

4.3 RGBA和颜色索引模式 107

4.3.2 颜色索引模式 109

4.3.3 在RGBA和颜色索引模式中选择 110

4.3.4 切换显示模式 110

4.4 指定颜色和着色模型 111

4.4.1 在RGBA模式下指定颜色 111

4.4.2 在颜色索引模式下指定颜色 112

4.4.3 指定着色模型 113

第5章 光照 115

5.1 隐藏表面消除工具箱 116

5.2 现实世界和OpenGL光照 117

5.2.1 环境光、散射光、镜面光和发射光 118

5.2.2 材料颜色 118

5.2.3 光和材料的RGB值 119

5.3 一个简单的例子:渲染光照球体 119

5.3.1 为每个物体的每个顶点定义法线向量 120

5.3.2 创建、定位和启用光源 121

5.3.3 选择光照模型 121

5.4 创建光源 122

5.3.5 一些重要注意事项 122

5.3.4 为场景中的物体定义材料属性 122

5.4.1 颜色 123

5.4.2 位置和衰减 124

5.4.3 聚光灯 125

5.4.4 多光源 126

5.4.5 控制光源的位置和方向 127

5.5 选择光照模型 131

5.5.1 全局环境光 131

5.5.4 镜面辅助颜色 132

5.5.3 双面光照 132

5.5.2 局部的观察点或无限远的观察点 132

5.5.5 启用光照 133

5.6 定义材料属性 133

5.6.1 散射和环境反射 134

5.6.2 镜面反射 135

5.6.3 发射光颜色 135

5.6.4 更改材料属性 135

5.6.5 颜色材料模式 137

5.7.3 光源的贡献 140

5.7.2 经过缩放的全局环境光 140

5.7.1 材料的发射光 140

5.7 光照的数学知识 140

5.7.4 完整的光照计算公式 142

5.7.5 镜面辅助颜色 142

5.8 颜色索引模式下的光照 143

第6章 混合、抗锯齿、雾和多边形偏移 145

6.1 混合 146

6.1.1 源因子和目标因子 146

6.1.3 使用混合方程式组合像素 148

6.1.2 启用混合 148

6.1.4 混合的样例用法 150

6.1.5 一个混合的例子 152

6.1.6 使用深度缓冲区进行三维混合 153

6.2 抗锯齿 156

6.2.1 对点和直线进行抗锯齿处理 158

6.2.2 使用多重采样对几何图形进行抗锯齿处理 162

6.2.3 对多边形进行抗锯齿处理 165

6.3 雾 166

6.3.1 使用雾 166

6.3.2 雾方程式 169

6.4 点参数 174

6.5 多边形偏移 176

第7章 显示列表 179

7.1 为什么使用显示列表 179

7.2 一个使用显示列表的例子 180

7.3 显示列表的设计哲学 182

7.4 创建和执行显示列表 184

7.4.1 命名和创建显示列表 185

7.4.2 存储在显示列表里的是什么 185

7.4.4 层次式显示列表 187

7.4.3 执行显示列表 187

7.4.5 管理显示列表索引 188

7.5 执行多个显示列表 188

7.6 用显示列表管理状态变量 193

第8章 绘制像素、位图、字体和图像 196

8.1 位图和字体 197

8.1.1 当前光栅位置 198

8.1.2 绘制位图 199

8.1.3 选择位图的颜色 200

8.1.4 字体和显示列表 200

8.1.5 定义和使用一种完整的字体 201

8.2 图像 203

8.3 图像管线 208

8.3.1 像素包装和解包 210

8.3.2 控制像素存储模式 210

8.3.3 像素传输操作 213

8.3.4 像素映射 215

8.3.5 放大、缩小或翻转图像 216

8.4 读取和绘制像素矩形 218

8.4.1 像素矩形的绘制过程 218

8.4.2 像素矩形的读取过程 220

8.6 图像处理子集 221

8.5 提高像素绘图速度的技巧 221

8.6.1 颜色表 222

8.6.2 卷积 226

8.6.3 颜色矩阵 231

8.6.4 柱状图 232

8.6.5 最小最大值 234

第9章 纹理贴图 236

9.1 概述和示例 239

9.1.1 纹理贴图的步骤 239

9.1.2 一个示例程序 240

9.2 指定纹理 242

9.2.1 纹理代理 245

9.2.2 替换纹理图像的全部或一部分 247

9.2.3 一维纹理 249

9.2.4 三维纹理 250

9.2.5 压缩纹理图像 254

9.2.6 使用纹理边框 256

9.2.7 Mipmap:多重细节层 256

9.3 过滤 263

9.4.2 创建和使用纹理对象 266

9.4 纹理对象 266

9.4.1 命名纹理对象 266

9.4.3 清除纹理对象 269

9.4.4 常驻纹理工作集 269

9.5 纹理函数 271

9.6 分配纹理坐标 273

9.6.1 计算适当的纹理坐标 274

9.6.2 重复和截取纹理 275

9.7 纹理坐标自动生成 278

9.7.1 创建轮廓线 279

9.7.2 球体纹理 283

9.7.3 立方图纹理 284

9.8 多重纹理 285

9.9 纹理组合器函数 289

9.10 在纹理之后应用辅助颜色 293

9.10.1 在禁用光照时使用辅助颜色 293

9.10.2 启用光照后的辅助镜面颜色 294

9.11 纹理矩阵堆栈 294

9.12 深度纹理 295

9.12.1 创建阴影图 295

9.12.2 生成纹理坐标并进行渲染 296

第10章 帧缓冲区 298

10.1 缓冲区及其用途 299

10.1.1 颜色缓冲区 300

10.1.2 清除缓冲区 301

10.1.3 选择用于读取和写入的颜色缓冲区 302

10.1.4 缓冲区的屏蔽 303

10.2 片断的测试和操作 304

10.2.1 裁剪测试 304

10.2.2 alpha测试 305

10.2.3 模版测试 306

10.2.5 遮挡查询 310

10.2.4 深度测试 310

10.2.6 混合、抖动和逻辑操作 312

10.3 累积缓冲区 314

10.3.1 场景抗锯齿 315

10.3.2 运动模糊 319

10.3.3 景深 320

10.3.4 柔和阴影 322

10.3.5 微移 323

第11章 分格化和二次方程表面 324

11.1 多边形分格化 324

11.1.2 分格化回调函数 325

11.1.1 创建分格化对象 325

11.1.3 分格化属性 329

11.1.4 多边形定义 332

11.1.5 删除分格化对象 334

11.1.6 提高分格化性能的建议 335

11.1.7 描述GLU错误 335

11.1.8 向后兼容性 335

11.2 二次方程表面:渲染球体、圆柱体和圆盘 336

11.2.2 控制二次方程对象的属性 337

11.2.1 管理二次方程对象 337

11.2.3 二次方程图元 338

第12章 求值器和NURBS 342

12.1 前提条件 342

12.2 求值器 343

12.2.1 一维求值器 343

12.2.2 二维求值器 347

12.2.3 使用求值器进行纹理处理 350

12.3 GLU的NURBS接口 352

12.3.1 一个简单的NURBS例子 352

12.3.2 管理NURBS对象 356

12.3.3 创建NURBS曲线或表面 358

12.3.4 修剪NURBS表面 362

第13章 选择和反馈 365

13.1 选择 365

13.1.1 基本步骤 366

13.1.2 创建名字堆栈 366

13.1.3 点击记录 368

13.1.4 一个选择例子 368

13.1.5 挑选 371

13.1.6 编写使用选择程序的一些建议 378

13.2 反馈 380

13.2.1 反馈数组 381

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

13.2.3 一个反馈例子 382

第14章 OpenGL高级技巧 386

14.1 错误处理 387

14.2 OpenGL版本 388

14.2.2 窗口系统扩展版本 389

14.3 标准的扩展 389

14.2.1 工具库版本 389

14.4 实现半透明效果 391

14.5 轻松实现淡出效果 391

14.6 使用后缓冲区进行物体选择 392

14.7 低开销的图像转换 393

14.8 显示层次 394

14.9 抗锯齿字符 395

14.10 绘制圆点 397

14.11 图像插值 397

14.12 制作贴花 397

14.13 使用模版缓冲区绘制填充的凹多边形 398

14.14 寻找冲突区域 399

14.15 阴影 400

14.16 隐藏直线消除 401

14.16.1 使用多边形偏移实现隐藏直线消除 401

14.16.2 使用模板缓冲区实现隐藏直线消除 402

14.17 纹理贴图的应用 402

14.18 绘制深度缓冲的图像 403

14.19 Dirichlet域 403

14.20 使用模版缓冲区实现生存游戏 404

14.21 glDrawPixels()和glCopyPixels()的其他应用 405

第15章 OpenGL 2.0和OpenGL着色语言 407

15.1 为什么要使用OpenGL 2.0 407

15.2 点块纹理 407

15.3 OpenGL图形管线和可编程着色管线 408

15.3.1 顶点处理 409

15.3.2 片断处理 410

15.4 使用GLSL着色器 411

15.4.1 着色器示例 411

15.4.2 OpenGL/GLSL接口 412

15.6.1 程序起点 417

15.5 OpenGL着色语言 417

15.6 使用GLSL创建着色器 417

15.6.2 声明变量 418

15.6.3 聚合类型 419

15.6.4 语句 423

15.6.5 函数 425

15.6.6 在GLSL程序中使用OpenGL状态值 426

15.7 在着色器中使用纹理贴图 427

15.7.1 顶点着色器的细节 428

15.7.2 片断着色器 432

附录A 操作顺序 435

附录B 状态变量 439

附录C OpenGL和窗口系统 458

附录D GLUT基础知识 473

附录E 计算法线向量 478

附录F 齐次坐标和变换矩阵 482

附录G 编程提示 486

附录H OpenGL的不变性规则 489

附录I OpenGL着色语言内置的变量和函数 491

术语表 505