OpenGL超级宝典

作者:Richard S. Wright

出版社: 人民邮电出版社

出版时间: 2012-5-1

定价: 108.00元

页数: 698

ISBN: 9787115274564

内容简介

    OpenGL超级宝典(第5版),ISBN:9787115274564,作者:(美)赖特 等著,付飞,李艳辉 译

作者简介

    Richard S. Wright, Jr.是Software Bisque公司的资深软件工程师,在这家公司使用OpenGL开发多媒体宇航和天文软件。他曾经是OpenGL ARB在实时3D领域的代表人物,编写了大量基于OpenGL的游戏、科学与医学应用程序、数据库可视化工具和教育软件。 Nicholas Haemel在ATI和AMD的8年中引导了3D图形硬件和软件结构设计与开发,并对OpenGL的3.0、3.1、3.2和3.3标准作出了贡献。 Graham Sellers是AMD的OpenGL小组的一位管理者,领导着一个OpenGL软件开发团队,致力于开发AMD的OpenGL驱动程序。他是ARB中的AMD代表,并对核心OpenGL 3.2、3.3和4.0规范作出了贡献。 Benjamin Lipchak是苹果公司的软件工程主管,领导着一个致力于图形开发技术和标准测试程序的团队,并负责iPhone和iPod touch的OpenGL ES一致性测试。他曾经在AMD管理一个OpenGL ES驱动程序小组,并领导着Khronos的OpenGL生态系统小组,在那里他创建了OpenGL SDK和OpenGL Pipeline等刊物。

目录

        第一部分 基本概念
        第1章 3D图形和OpenGL简介 2
        1.1 计算机图形的简单历史回顾 2
        1.1.1 进入电子时代 3
        1.1.2 走向3D 3
        1.2 3D图形技术和术语 6
        1.2.1 变换(Transformation)和投影(Projection) 6
        1.2.2 光栅化(Rasterization) 6
        1.2.3 着色 7
        1.2.4 纹理贴图 8
        1.2.5 混合 9
        1.2.6 将点连接起来 9
        1.3 3D图形的常见用途 9
        1.3.1 实时3D 10
        1.3.2 非实时3D 12
        1.3.3 着色器 12
        1.4 3D编程的基本原则 13
        1.4.1 并非工具包 13
        1.4.2 坐标系统 13
        1.4.3 投影:从3D到2D 17
        1.5 总结 19
        第2章 入门指南 20
        2.1 什么是OpenGL? 20
        2.1.1 标准的演化 21
        2.1.2 OpenGL的未来 24
        2.2 使用OpenGL 27
        2.2.1 支持阵容 28
        2.2.2 OpenGL API特性 29
        2.2.3 OpenGL错误 31
        2.2.4 确认版本 31
        2.2.5 使用glHint获取线索 32
        2.2.6  OpenGL状态机 32
        2.3 建立Windows项目 33
        2.3.1 包含路径 34
        2.3.2 创建项目 35
        2.3.3 添加文件 36
        2.4 建立Mac OS X项目 38
        2.4.1 自定义创建设置 38
        2.4.2 创建新项目 39
        2.4.3 框架、头文件和库 41
        2.5 第一个三角形 43
        2.5.1 要包含什么 45
        2.5.2 启动GLUT 45
        2.5.3 坐标系基础 47
        2.5.4 完成设置 50
        2.5.5 言归正传 52
        2.6 加点儿活力! 53
        2.6.1 特殊按键 53
        2.6.2 刷新显示 54
        2.6.3 简单的动画片 54
        2.7 总结 55
        第3章 基础渲染 56
        3.1 基础图形管线 57
        3.1.1 客户机-服务器 57
        3.1.2 着色器 58
        3.2 创建坐标系 60
        3.2.1 正投影 60
        3.2.2 透视投影 61
        3.3 使用存储着色器 61
        3.3.1 属性 62
        3.3.2 Uniform值 62
        3.4 将点连接起来 64
        3.4.1 点和线 64
        3.4.2 绘制3D三角形 68
        3.4.3 单独的三角形 68
        3.4.4 一个简单批次容器 72
        3.4.5 不希望出现的几何图形 73
        3.4.6 多边形偏移 78
        3.4.7 裁剪 80
        3.5 混合 81
        3.5.1 组合颜色 81
        3.5.2 改变混合方程式 84
        3.5.3 抗锯齿 85
        3.5.4 多重采样 87
        3.6 小结 89
        第4章 基础变换:初识向量/矩阵 90
        4.1 本章是令人生畏的数学课吗 90
        4.2 3D图形数学速成课 91
        4.2.1 向量 91
        4.2.2 矩阵 94
        4.3 理解变换 95
        4.3.1 视觉坐标 95
        4.3.2 视图变换 96
        4.3.3 模型变换 96
        4.3.4 模型视图的二元性 98
        4.3.5 投影变换 98
        4.3.6 视口变换 99
        4.4 模型视图矩阵 99
        4.4.1 矩阵构造 100
        4.4.2 运用模型视图矩阵 103
        4.5 更多对象 105
        4.5.1 使用三角形批次类 105
        4.5.2 创建一个球体 106
        4.5.3 创建一个花托 106
        4.5.4 创建一个圆柱或圆锥 107
        4.5.5 创建一个圆盘 108
        4.6 投影矩阵 108
        4.6.1 正投影 109
        4.6.2 透视投影 110
        4.6.3 模型视图投影矩阵 111
        4.7 变换管线 113
        4.7.1 使用矩阵堆栈 114
        4.7.2 管理管线 115
        4.7.3 加点调料 118
        4.8 使用照相机和角色进行移动 119
        4.8.1 角色帧 120
        4.8.2 欧拉角:“卢克!请使用帧” 121
        4.8.3 照相机管理 121
        4.8.4 添加更多角色 123
        4.8.5 关于光线 125
        4.9 小结 126
        第5章 基础纹理 127
        5.1 原始图像数据 128
        5.1.1 像素包装 129
        5.1.2 像素图 130
        5.1.3 包装的像素格式 132
        5.1.4 保存像素 133
        5.1.5 读取像素 134
        5.2 载入纹理 137
        5.2.1 使用颜色缓冲区 138
        5.2.2 更新纹理 138
        5.2.3 纹理对象 139
        5.3 纹理应用 140
        5.3.1 纹理坐标 140
        5.3.2 纹理参数 142
        5.3.3 综合运用 144
        5.4 Mip贴图 148
        5.4.1 Mip贴图过滤 149
        5.4.2 生成Mip层 150
        5.4.3 活动的Mip贴图 150
        5.5 各向异性过滤 158
        5.6 纹理压缩 160
        5.6.1 压缩纹理 160
        5.6.2 加载压缩纹理 161
        5.6.3 最后一个示例 162
        5.7 小结 163
        第6章 跳出“盒子”:非存储着色器 164
        6.1 初识OpenGL着色语言 164
        6.1.1 变量和数据类型 165
        6.1.2 存储限定符 168
        6.1.3 真正的着色器 169
        6.1.4 编译、绑定和连接 172
        6.1.5 使用着色器 177
        6.1.6 Provoking Vertex 178
        6.2 着色器统一值 179
        6.2.1 寻找统一值 179
        6.2.2 设置标量和向量统一值 180
        6.2.3 设置统一数组 180
        6.2.4 设置统一矩阵 181
        6.2.5 平面着色器 182
        6.3 内建函数 184
        6.3.1 三角函数 184
        6.3.2 指数函数 184
        6.3.3 几何函数 185
        6.3.4 矩阵函数 185
        6.3.5 向量相关函数 186
        6.3.6 常用函数 187
        6.4 模拟光线 189
        6.4.1 简单漫射光 189
        6.4.2 点光源漫反射着色器 191
        6.4.3 ADS光照模型 194
        6.4.4 Phong着色 197
        6.5 访问纹理 199
        6.5.1 只有纹理单元 200
        6.5.2 照亮纹理单元 201
        6.5.3 丢弃片段 203
        6.5.4 卡通着色(Cell Shading)——将纹理单元作为光线 205
        6.6 小结 207
        第7章 纹理高级知识 208
        7.1 矩形纹理 208
        7.1.1 加载矩形纹理 209
        7.1.2 使用矩形纹理 209
        7.2 立方体贴图 212
        7.2.1 加载立方体贴图 212
        7.2.2 创建天空盒 213
        7.2.3 创建反射 215
        7.3 多重纹理 216
        7.3.1 多重纹理坐标 217
        7.3.2 多重纹理示例 217
        7.4 点精灵(点块纹理) 219
        7.4.1 使用点 220
        7.4.2 点大小 220
        7.4.3 综合运用 221
        7.4.4 点参数 223
        7.4.5 异形点 224
        7.4.6 点的旋转 225
        7.5 纹理数组 226
        7.5.1 加载2D纹理数组 226
        7.5.2 纹理数组索引 228
        7.5.3 访问纹理数组 228
        7.6 纹理代理 229
        7.7 小结 230
        第二部分 深入探索
        第8章 缓冲区对象:存储尽在掌握 232
        8.1 缓冲区 233
        8.1.1 创建自己的缓冲区 233
        8.1.2 填充缓冲区 234
        8.1.3 像素缓冲区对象 235
        8.1.4 缓冲区对象 241
        8.2 帧缓冲区对象,摆脱窗口的限制 242
        8.2.1 如何使用FBO 243
        8.2.2 渲染缓冲区对象 243
        8.2.3 绘制缓冲区 245
        8.2.4 帧缓冲区的完整性 247
        8.2.5 在帧缓冲区中复制数据 250
        8.2.6 FBO综合运用 251
        8.3 渲染到纹理 254
        8.4 小结 259
        第9章 高级缓冲区:超越基础水平 260
        9.1 获得数据 260
        9.1.1 映射缓冲区 261
        9.1.2 复制缓冲区 262
        9.2 控制像素着色器表现,映射片段输出 262
        9.3 新一代硬件的新格式 264
        9.3.1 浮点——最终的真正精确 264
        9.3.2 多重采样 276
        9.3.3 整数 279
        9.3.4 sRGB 280
        9.3.5 纹理压缩 281
        9.4 小结 283
        第10章 片段操作:管线的终点 284
        10.1 裁剪——将几何图形剪切到希望的大小 285
        10.2 多重采样 285
        10.2.1 样本覆盖 285
        10.2.2 样本遮罩 286
        10.2.3 综合运用 287
        10.3 模板操作 290
        10.4 深度测试 292
        10.4.1 深度截取 292
        10.5 进行混合 293
        10.5.1 混合方程式 293
        10.5.2 混合函数 294
        10.5.3 综合运用 295
        10.6 抖动 296
        10.7 逻辑操作 297
        10.8 遮罩输出 298
        10.8.1 颜色 298
        10.8.2 深度 298
        10.8.3 模板 298
        10.8.4 用途 299
        10.9 小结 299
        第11章 高级着色器应用 300
        11.1 高级顶点着色器 300
        11.1.1 在顶点着色器中进行物理模拟 301
        11.2 几何着色器 306
        11.2.1 直通几何着色器 306
        11.2.2 在应用程序中使用几何着色器 308
        11.2.3 在几何着色器中丢弃几何图形 311
        11.2.4 在几何着色器中修改几何图形 313
        11.2.5 在几何着色器中生成几何图形 314
        11.2.6 在几何着色器中改变图元类型 317
        11.2.7 由几何着色器引入的新图元类型 319
        11.3 高级片段着色器 321
        11.3.1 片段着色器中的后期处理——颜色校正 322
        11.3.2 片段着色器中的后期处理——卷积 323
        11.3.3 在片段着色器中生成图像数据 326
        11.3.4 在片段着色器中丢弃工作 328
        11.3.5 逐片段控制深度 329
        11.4 更高级的着色器函数 330
        11.4.1 插值和存储限定符 330
        11.4.2 高级内建函数 333
        11.5 统一缓冲区对象 334
        11.5.1 建立统一块 335
        11.6 小结 342
        第12章 高级几何图形管理 343
        12.1 查询功能——收集OpenGL管线相关信息 343
        12.1.1 准备查询 344
        12.1.2 发出查询 345
        12.1.3 取回查询结果 345
        12.1.4 使用查询结果 346
        12.1.5 让OpenGL决定 349
        12.1.6 测量执行命令所需时间 350
        12.2 在GPU内存中存储数据 352
        12.2.1 使用缓冲区存储顶点数据 353
        12.2.2 在缓冲区中保存顶点索引 356
        12.3 使用顶点数组对象来组织缓冲区 358
        12.4 高效地绘制大量几何图形 359
        12.4.1 组合绘制函数 360
        12.4.2 使用图元重启对几何图形进行组合 361
        12.4.3 实例渲染 362
        12.4.4 自动获得数据 367
        12.5 存储变换的顶点——变换反馈 371
        12.5.1 变换反馈 371
        12.5.2 关闭光栅化 376
        12.5.3 使用图元查询对顶点进行计数 376
        12.5.4 使用图元查询的结果 378
        12.5.5 变换反馈的应用实例 379
        12.6 裁剪并确定绘制内容 386
        12.6.1 裁剪距离——自定义裁剪空间 387
        12.7 在OpenGL开始绘制时进行同步 389
        12.8 小结 392
        第三部分 特定平台应用
        第13章 Windows上的OpenGL 394
        13.1 Windows中的OpenGL实现 395
        13.1.1 微软的OpenGL 395
        13.1.2 现代图形驱动程序 395
        13.1.3 扩展OpenGL 396
        13.1.4 WGL扩展 398
        13.2 基本窗口渲染 399
        13.2.1 GDI设备环境 399
        13.2.2 像素格式 400
        13.2.3 OpenGL渲染环境 406
        13.3 综合运用 409
        13.3.1 创建窗口 410
        13.4 全屏渲染 414
        13.5 双重缓冲 415
        13.5.1 消除视觉撕裂 415
        13.6 小结 416
        第14章 OS X上的OpenGL 417
        14.1 OpenGL在Mac上的4种接口 417
        14.2 在OpenGL中使用Cocoa 418
        14.2.1 创建一个Cocoa程序 418
        14.2.2 综合运用 423
        14.2.3 双缓冲还是单缓冲 425
        14.2.4 球体世界 425
        14.3 全屏渲染 429
        14.3.1 在Cocoa中进行全屏显示 430
        14.4 CGL 435
        14.4.1 同步帧速率 435
        14.4.2 提高填充性能 436
        14.4.3 多线程OpenGL 437
        14.5 小结 437
        第15章 Linux上的OpenGL 438
        15.1 基础知识 438
        15.1.1 简史 439
        15.1.2 什么是X Window 439
        15.2 入门讲解 439
        15.2.1 检查OpenGL 440
        15.2.2 设置Mesa 440
        15.2.3 设置Mesa硬件驱动程序 441
        15.2.4 设置GLUT 和 GLEW 441
        15.2.5 创建OpenGL应用程序 442
        15.3 GLX——X Window的接口 443
        15.3.1 显示和X Window 444
        15.3.2 配置管理和显示效果 444
        15.3.3 窗口和渲染表面 447
        15.3.4 OpenGL和GLX扩展 448
        15.3.5 环境管理 448
        15.3.6 同步 451
        15.3.7 GLX查询 452
        15.3.8 综合运用 453
        15.4 小结 455
        第16章 OpenGL ES:移动设备上的OpenGL 456
        16.1 精简的OpenGL 456
        16.1.1 ES指什么 457
        16.1.2 历史概述 457
        16.2 版本选择 458
        16.2.1 ES 2.0 459
        16.3 ES环境 463
        16.3.1 应用程序设计的注意事项 463
        16.3.2 有限环境的处理 464
        16.3.3 定点数学 464
        16.4 EGL: 新的窗口环境 465
        16.4.1 EGL显示 466
        16.4.2 创建窗口 467
        16.4.3 环境管理 470
        16.4.4 呈现缓冲区和渲染同步 471
        16.4.5 更多关于EGL的内容 472
        16.5 处理嵌入式环境 473
        16.5.1 流行的操作系统 473
        16.5.2 供应商特定扩展 473
        16.5.3 个人玩家 473
        16.6 苹果掌上平台 474
        16.6.1 设置iPhone项目 474
        16.6.2 移植到iPhone 477
        16.7 小结 483
        附录A 更多阅读建议 484
        附录B 词汇表 486
        附录C (核心)OpenGL 3.3参考 489
     · · · · · ·     (收起)

Copyright © 游戏人+ All Rights Reserved.