《OpenGL编程指南 原书第7版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:DAVESHREINER等编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2010
  • ISBN:9787111294504
  • 页数:519 页
图书介绍:本书对OpenGL以及OpenGL实用函数库进行了全面而又权威的介绍,素有“OpenGL红宝书”之誉。本书的上一个版本覆盖了到OpenGL 2.1版的内容。本版涵盖了OpenGL 3.0和3.1的最新特性。本书以清晰的语言描述了OpenGL的功能以及许多基本的计算机图形技巧,例如创建和渲染3D模型、从不同的透视角度观察物体、使用着色、光照和纹理贴图使场景更加逼真等。另外,本书还深入探讨了许多高级技巧,包括纹理贴图、抗锯齿、雾和大气效果、NURBS、图像处理子集等。此外,本书还对一些重要的主题进行了讨论,例如提高性能、OpenGL扩展以及跨平台技术等。

第1章 OpenGL简介 1

1.1什么是OpenGL 1

1.2一段简单的OpenGL代码 3

1.3 OpenGL函数的语法 4

1.4 OpenGL是一个状态机 6

1.5 OpenGL渲染管线 6

1.5.1显示列表 7

1.5.2求值器 7

1.5.3基于顶点的操作 7

1.5.4图元装配 7

1.5.5像素操作 8

1.5.6纹理装配 8

1.5.7光栅化 8

1.5.8片断操作 8

1.6与OpenGL相关的函数库 9

1.6.1包含文件 9

1.6.2 OpenGL实用工具库(GLUT) 10

1.7动画 13

1.7.1暂停刷新 14

1.7.2动画=重绘+交换 15

1.8 OpenGL及其废弃机制 17

1.8.1 OpenGL渲染环境 17

1.8.2访问OpenGL函数 18

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

2.1绘图工具箱 20

2.1.1清除窗口 20

2.1.2指定颜色 22

2.1.3强制完成绘图操作 23

2.1.4坐标系统工具箱 24

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

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

2.2.2指定顶点 27

2.2.3 OpenGL几何图元 27

2.3基本状态管理 31

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

2.4.1点的细节 32

2.4.2直线的细节 33

2.4.3多边形的细节 36

2.5法线向量 41

2.6顶点数组 43

2.6.1步骤1:启用数组 44

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

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

2.6.4重启图元 51

2.6.5实例化绘制 53

2.6.6混合数组 54

2.7缓冲区对象 57

2.7.1创建缓冲区对象 57

2.7.2激活缓冲区对象 58

2.7.3用数据分配和初始化缓冲区对象 58

2.7.4更新缓冲区对象的数据值 60

2.7.5在缓冲区对象之间复制数据 62

2.7.6清除缓冲区对象 63

2.7.7使用缓冲区对象存储顶点数组数据 63

2.8顶点数组对象 65

2.9属性组 69

2.10创建多边形表面模型的一些提示 71

第3章 视图 77

3.1简介:用照相机打比方 78

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

3.1.2通用的变换函数 83

3.2视图和模型变换 84

3.2.1对变换进行思考 85

3.2.2模型变换 86

3.2.3视图变换 89

3.3投影变换 93

3.3.1透视投影 94

3.3.2正投影 95

3.3.3视景体裁剪 96

3.4视口变换 96

3.4.1定义视口 96

3.4.2变换深度坐标 97

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

3.6操纵矩阵堆栈 100

3.6.1模型视图矩阵堆栈 101

3.6.2投影矩阵堆栈 102

3.7其他裁剪平面 102

3.8一些组合变换的例子 104

3.8.1创建太阳系模型 104

3.8.2创建机器人手臂 107

3.9逆变换和模拟变换 109

第4章 颜色 113

4.1颜色感知 113

4.2计算机颜色 114

4.3 RGBA和颜色索引模式 115

4.3.1 RGBA显示模式 116

4.3.2颜色索引模式 117

4.3.3在RGBA和颜色索引模式中进行选择 118

4.3.4切换显示模式 118

4.4指定颜色和着色模型 119

4.4.1在RGBA模式下指定颜色 119

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

4.4.3指定着色模型 121

第5章 光照 123

5.1隐藏表面消除工具箱 124

5.2现实世界和OpenGL光照 125

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

5.2.2材料颜色 126

5.2.3光和材料的RGB值 126

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

5.4创建光源 129

5.4.1颜色 130

5.4.2位置和衰减 131

5.4.3聚光灯 132

5.4.4多光源 133

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

5.5选择光照模型 138

5.5.1全局环境光 138

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

5.5.3双面光照 139

5.5.4镜面辅助颜色 139

5.5.5启用光照 140

5.6定义材料属性 140

5.6.1散射和环境反射 141

5.6.2镜面反射 141

5.6.3发射光颜色 142

5.6.4更改材料属性 142

5.6.5颜色材料模式 143

5.7和光照有关的数学知识 146

5.7.1材料的发射光 147

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

5.7.3光源的贡献 147

5.7.4完整的光照计算公式 148

5.7.5镜面辅助颜色 148

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

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

6.1混合 152

6.1.1源因子和目标因子 152

6.1.2启用混合 154

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

6.1.4混合的样例用法 156

6.1.5一个混合的例子 157

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

6.2抗锯齿 162

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

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

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

6.3雾 172

6.3.1使用雾 173

6.3.2雾方程式 175

6.4点参数 181

6.5多边形偏移 182

第7章 显示列表 185

7.1为什么使用显示列表 185

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

7.3显示列表的设计哲学 188

7.4创建和执行显示列表 189

7.4.1命名和创建显示列表 191

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

7.4.3执行显示列表 193

7.4.4层次式显示列表 193

7.4.5管理显示列表索引 194

7.5执行多个显示列表 194

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

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

8.1位图和字体 203

8.1.1当前光栅位置 204

8.1.2绘制位图 205

8.1.3选择位图的颜色 206

8.1.4字体和显示列表 206

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

8.2图像 209

8.3图像管线 215

8.3.1像素包装和解包 216

8.3.2控制像素存储模式 217

8.3.3像素传输操作 219

8.3.4像素映射 221

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

8.4读取和绘制像素矩形 224

8.5使用缓冲区对象存取像素矩形数据 227

8.5.1使用缓冲区对象传输像素数据 227

8.5.2使用缓冲区对象提取像素数据 228

8.6提高像素绘图速度的技巧 229

8.7图像处理子集 230

8.7.1颜色表 231

8.7.2卷积 234

8.7.3颜色矩阵 240

8.7.4柱状图 241

8.7.5最小最大值 243

第9章 纹理贴图 245

9.1概述和示例 248

9.1.1纹理贴图的步骤 248

9.1.2一个示例程序 249

9.2指定纹理 251

9.2.1纹理代理 255

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

9.2.3一维纹理 259

9.2.4三维纹理 261

9.2.5纹理数组 264

9.2.6压缩纹理图像 265

9.2.7使用纹理边框 267

9.2.8 mipmap:多重细节层 267

9.3过滤 275

9.4纹理对象 277

9.4.1命名纹理对象 277

9.4.2创建和使用纹理对象 278

9.4.3清除纹理对象 280

9.4.4常驻纹理工作集 280

9.5纹理函数 282

9.6分配纹理坐标 284

9.6.1计算正确的纹理坐标 285

9.6.2重复和截取纹理 286

9.7纹理坐标自动生成 289

9.7.1创建轮廓线 289

9.7.2球体纹理 293

9.7.3立方图纹理 294

9.8多重纹理 296

9.9纹理组合器函数 299

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

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

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

9.11点块纹理 303

9.12纹理矩阵堆栈 304

9.13深度纹理 305

9.13.1创建阴影图 306

9.13.2生成纹理坐标并进行渲染 307

第10章 帧缓冲区 309

10.1缓冲区及其用途 310

10.1.1颜色缓冲区 311

10.1.2清除缓冲区 312

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

10.1.4缓冲区的屏蔽 315

10.2片断测试和操作 316

10.2.1裁剪测试 316

10.2.2 alpha测试 317

10.2.3模板测试 318

10.2.4深度测试 322

10.2.5遮挡查询 322

10.2.6条件渲染 324

10.2.7混合、抖动和逻辑操作 325

10.3累积缓冲区 327

10.3.1运动模糊 328

10.3.2景深 328

10.3.3柔和阴影 331

10.3.4微移 331

10.4帧缓冲区对象 332

10.4.1渲染缓冲区 333

10.4.2复制像素矩形 340

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

11.1多边形分格化 342

11.1.1创建分格化对象 343

11.1.2分格化回调函数 343

11.1.3分格化属性 347

11.1.4多边形定义 350

11.1.5删除分格化对象 352

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

11.1.7描述GLU错误 352

11.1.8向后兼容性 352

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

11.2.1管理二次方程对象 354

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

11.2.3二次方程图元 355

第12章 求值器和NURB S 360

12.1前提条件 360

12.2求值器 361

12.2.1一维求值器 361

12.2.2二维求值器 365

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

12.3 GLU的NURBS接口 371

12.3.1一个简单的NURBS例子 371

12.3.2管理NURBS对象 374

12.3.3创建NURBS曲线或表面 377

12.3.4修剪NURBS表面 380

第13章 选择和反馈 383

13.1选择 383

13.1.1基本步骤 384

13.1.2创建名字栈 384

13.1.3点击记录 385

13.1.4一个选择例子 386

13.1.5挑选 389

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

13.2反馈 398

13.2.1反馈数组 399

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

13.2.3一个反馈例子 400

第14章 OpenGL高级技巧 404

14.1错误处理 405

14.2 OpenGL版本 406

14.2.1工具函数库版本 407

14.2.2窗口系统扩展版本 407

14.3标准的扩展 407

14.4实现半透明效果 409

14.5轻松实现淡出效果 409

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

14.7低开销的图像转换 411

14.8显示层次 412

14.9抗锯齿字符 413

14.10绘制圆点 414

14.11图像插值 414

14.12制作贴花 415

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

14.14寻找冲突区域 416

14.15阴影 417

14.16隐藏直线消除 418

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

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

14.17纹理贴图的应用 419

14.18绘制深度缓冲的图像 420

14.19 Dirichlet域 420

14.20使用模板缓冲区实现生存游戏 421

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

第15章OpenGL着色语言 424

15.1 OpenGL图形管线和可编程着色器 424

15.1.1顶点处理 425

15.1.2片断处理 426

15.2使用GLSL着色器 427

15.2.1着色器示例 427

15.2.2 OpenGL/GLSL接口 428

15.3 OpenGL着色语言 432

15.4使用GLSL创建着色器 433

15.4.1程序起点 433

15.4.2声明变量 433

15.4.3聚合类型 434

15.5 uniform块 439

15.5.1在着色器中指定uniform变量 440

15.5.2访问在uniform块中声明的uniform变量 440

15.5.3计算不变性 446

15.5.4语句 446

15.5.5函数 448

15.5.6在GLSL程序中使用OpenGL状态值 449

15.6在着色器中访问纹理图像 449

15.7着色器预处理器 452

15.7.1预处理器指令 452

15.7.2宏定义 452

15.7.3预处理器条件 453

15.7.4编译器控制 453

15.8扩展处理 454

15.9顶点着色器的细节 454

15.10变换反馈 458

15.11片断着色器 462

附录A? GLUT (OpenGL实用工具库)基础知识 464

附录B状态变量 468

附录C齐次坐标和变换矩阵 495

附录D OpenGL和窗口系统 499

术语表 511