第一图书网

OpenGL超级宝典

(美)Richard S.Wright Jr Benjamin Lipchak 著 人民邮电出版社
出版时间:

2005-9  

出版社:

人民邮电出版社  

作者:

(美)Richard S.Wright Jr Benjamin Lipchak 著  

页数:

735  

字数:

1469000  

Tag标签:

无  

内容概要

  本书是OpenGL编程指南,涵盖了使用新版本的OpenGL进行编程所需要的主要知识。  全书分3个部分,共23章,另有3个附录。第一部分包括第1章到第12章,介绍经典OpenGL绘图的所有基础知识,包括3D图形和OpenGL简介,OpenGL空间绘图,几何转换,颜色、材料和光照,纹理贴图,曲线和表面,管线,交互式图形等内容。第二部分包括第13章到第15章,分别介绍了不同操作系统平台上的OpenGL功能特性和编程细节。第三部分是第16章到第23章,着重介绍OpenGL的一些高级功能以及OpenGL 1.5的新特性。附录部分给出了更多阅读建议、术语表和对OpenGL ES的简单介绍。随书光盘中包含了不同操作系统平台下的丰富的示例程序及其源代码。  本书适合于希望精通OpenGL以便对他们的图形编程和3D图形知识进行扩展的程序员,也可以帮助那些经验丰富的OpenGL程序员学习如何移植自己的应用程序。本书既可以作为学习OpenGL的教材,也可以作为随时查阅的参考手册。

书籍目录

第一部分 经典OpenGL第1章 3D图形和OpenGL简介 31.1 计算机图形的简单历史回顾 31.1.1 进入CRT 31.1.2 走向3D 41.2 3D效果初探 61.2.1 透视(视角) 61.2.2 颜色和着色 61.2.3 光照和阴影 71.2.4 纹理贴图 71.2.5 雾 71.2.6 混和和透明 81.2.7 抗锯齿 81.3 3D图形的常见用途 91.3.1 实时3D 91.3.2 非实时3D 101.4 3D编程的基本原则 111.4.1 立即模式和保持模式(场景图) 111.4.2 坐标系统 111.4.3 投影(从3D到2D) 141.5 小结 16第2章 使用OpenGL 172.1 什么是OpenGL 172.1.1 标准的演化 182.1.2 API战争 192.2 OpenGL的工作原理 222.2.1 泛型实现 222.2.2 硬件实现 232.2.3 管线 242.3 OpenGL是API而不是编程语言 242.4 API规范 252.4.1 数据类型 252.4.2 函数名约定 262.5 平台独立性 272.5.1 使用GLUT 272.5.2 设置编程环境 282.5.3 你的第一个程序 282.5.4 用OpenGL绘制形状 322.6 使用OpenGL和GLUT生成动画 372.7 OpenGL状态机 402.8 OpenGL错误 412.9 确认版本 422.10 调用glHint获得线索 422.11 使用扩展 422.11.1 检查扩展 432.11.2 这是谁的扩展 432.11.3 在Windows中使用OpenGL 1.1以后的版本 442.12 小结 442.13 参考 45第3章 在空间中绘图(几何图元和缓冲区) 553.1 在3D中绘制点 553.2 设置3D画布 563.3 3D空间中的点——顶点 573.4 绘制图形 583.5 设置点的大小 603.6 在3D空间中画直线 623.6.1 线带和线环 633.6.2 用直线构成近似曲线 643.6.3 设置直线的宽度 643.6.4 直线点画 663.7 在3D空间中绘制三角形 683.7.1 三角形——第一种多边形 683.7.2 环绕 683.7.3 三角形带 693.7.4 三角形扇 693.8 创建实心物体 703.8.1 设置多边形颜色 723.8.2 隐藏表面消除 723.8.3 剔除:隐藏表面,提高性能 733.8.4 多边形模式 753.9 其他图元 753.9.1 四条边的多边形——四边形 753.9.2 通用多边形 763.9.3 填充多边形,回顾点画 763.9.4 多边形创建规则 793.9.5 细分和边界 803.10 其他缓冲区技巧 823.10.1 使用缓冲区目标 823.10.2 操纵深度缓冲区 833.10.3 用剪刀进行裁剪 843.10.4 使用模版缓冲区 853.11 小结 883.12 参考 88第4章 几何转换——管线 1004.1 本章是不是枯燥的数学课 1004.2 理解转换 1014.2.1 视觉坐标 1014.2.2 视图转换 1024.2.3 模型转换 1024.2.4 模型视图二元性 1034.2.5 投影转换 1044.2.6 视口转换 1044.3 矩阵——3D图形的数学基础 1054.3.1 什么是矩阵 1054.3.2 转换管线 1054.3.3 模型视图矩阵 1064.3.4 单位矩阵 1084.3.5 矩阵堆栈 1094.3.6 一个原子例子 1104.4 使用投影 1124.4.1 正投影 1124.4.2 透视投影 1134.4.3 一个远处缩小的例子 1144.5 高级矩阵操作 1164.5.1 载入矩阵 1174.5.2 自己执行转换 1184.5.3 把转换放在一起 1204.6 使用照相机和角色在OpenGL中移动 1214.6.1 角色帧 1214.6.2 欧拉角:“卢克!请使用帧” 1224.6.3 照相机管理 1224.7 综合应用 1234.8 小结 1274.9 参考 128第5章 颜色、材料和光照基础知识 1345.1 什么是颜色 1345.1.1 光的波性 1345.1.2 光的粒子性 1355.1.3 人眼作为光子检测器 1365.1.4 计算机作为光子检测器 1365.2 PC颜色硬件 1375.3 PC显示模式 1375.3.1 屏幕分辨率 1385.3.2 颜色深度 1385.4 在OpenGL中使用颜色 1395.4.1 颜色立方体 1395.4.2 设置绘图颜色 1405.4.3 着色 1405.4.4 设置着色模型 1425.5 现实世界的颜色 1425.5.1 环境光 1435.5.2 散射光 1435.5.3 镜面光 1435.5.4 综合考虑 1435.6 现实世界的材料 1445.6.1 材料属性 1445.6.2 向材料添加光照 1445.6.3 计算环境光效果 1445.6.4 散射和镜面光效果 1455.7 向场景添加光照 1455.7.1 启用光照 1455.7.2 设置光照模型 1465.7.3 设置材料属性 1465.8 使用光源 1485.8.1 哪种方式最合适 1485.8.2 表面法线 1495.8.3 指定法线 1495.8.4 单位法线 1505.8.5 寻找法线 1515.8.6 设置光源 1525.8.7 设置材料属性 1535.8.8 指定多边形 1535.9 光照效果 1545.9.1 镜面加亮 1545.9.2 镜面光 1545.9.3 镜面反射 1555.9.4 镜面指数 1565.9.5 法线均衡 1575.10 综合讨论 1585.10.1 创建亮点 1585.10.2 绘制光点 1595.11 阴影 1625.11.1 什么是阴影 1635.11.2 实现压平的代码 1635.11.3 一个阴影例子 1645.11.4 重新回顾球体世界 1665.12 小结 1675.13 参考 167第6章 颜色和材料的更多细节 1746.1 混合 1746.1.1 组合颜色 1746.1.2 修改混合方程式 1776.1.3 抗锯齿 1776.2 雾 1816.3 累积缓冲区 1836.4 其他颜色操作 1856.4.1 颜色掩码 1856.4.2 颜色逻辑操作 1856.4.3 Alpha测试 1866.4.4 抖动 1866.5 小结 1866.6 参考 187第7章 OpenGL中的图像 1917.1 位图 1917.2 像素包装 1957.3 像素图 1967.3.1 经过包装的像素格式 1987.3.2 一个颜色更丰富的例子 1987.3.3 移动像素 2007.3.4 保存像素 2017.4 像素的更多乐趣 2037.4.1 像素缩放 2087.4.2 像素转移 2087.4.3 像素映射 2117.5 图像“子集” 2127.6 小结 2227.7 参考 223第8章 纹理贴图基础知识 2398.1 载入纹理 2398.1.1 使用颜色缓冲区 2428.1.2 更新纹理 2428.2 将纹理贴图到几何图形 2438.3 一个简单的2D例子 2448.4 纹理环境 2498.5 纹理参数 2508.5.1 基本过滤 2508.5.2 纹理环绕 2518.5.3 带纹理的卡通 2528.5.4 Mip贴图 2568.6 纹理对象 2598.7 小结 2668.8 参考 266第9章 纹理贴图高级知识 2799.1 第二颜色 2799.2 各向异性过滤 2819.3 纹理压缩 2829.3.1 压缩纹理 2839.3.2 载入压缩纹理 2849.4 纹理坐标生成 2849.4.1 物体线性贴图 2899.4.2 视觉线性贴图 2909.4.3 球体贴图 2919.4.4 立方体贴图 2929.5 多重纹理 2949.5.1 多重纹理坐标 2959.5.2 一个多重纹理例子 2959.6 纹理组合器 2989.7 小结 3009.8 参考 300第10章 曲线和表面 30610.1 内部支持的表面 30610.1.1 设置二次方程状态 30710.1.2 绘制二次方程图形 30810.1.3 用二次方程进行建模 31110.2 Bézier曲线和表面 31210.2.1 参数方程表示形式 31310.2.2 求值器 31410.3 NURBS 32110.3.1 从Bézier到B样条 32110.3.2 结点 32210.3.3 创建NURBS表面 32210.3.4 NURBS属性 32310.3.5 定义表面 32310.3.6 修剪 32410.3.7 NURBS表面 32610.4 镶嵌 32610.4.1 镶嵌器 32710.4.2 镶嵌器回调函数 32710.4.3 指定顶点数据 32810.4.4 综合应用 32810.5 小结 33210.6 参考 332第11章 这就是管线——更快的几何图形渲染 35311.1 模型装配101 35311.2 显示列表 36311.2.1 批处理 36311.2.2 预批处理 36411.2.3 使用显示列表的一些注意事项 36511.2.4 转换到显示列表 36511.3 测量性能 36611.4 顶点数组 37011.4.1 载入几何图形 37311.4.2 启用数组 37411.4.3 数据在哪里 37411.4.4 进行绘图 37511.4.5 索引顶点数组 37611.5 小结 38511.6 参考 385第12章 交互式图形 39512.1 选择 39512.1.1 为图元命名 39612.1.2 在选择模式下工作 39712.1.3 选择缓冲区 39812.1.4 挑选 39912.1.5 层次式挑选 40112.1.6 反馈 40412.1.7 反馈缓冲区 40412.1.8 反馈数据 40512.1.9 用户定义标记 40512.2 一个反馈例子 40612.2.1 对物体加上标签以便反馈 40612.2.2 步骤1:选择物体 40812.2.3 步骤2:从物体获取反馈信息 40912.3 小结 41112.4 参考 411第二部分 OpenGL无处不在第13章 Windows上的OpenGL Wiggle 41713.1 Windows上的OpenGL实现 41713.1.1 泛型OpenGL 41813.1.2 可安装客户驱动程序(ICD) 41813.1.3 Mini客户驱动程序(MCD) 41813.1.4 Mini驱动程序 41913.1.5 扩展OpenGL 41913.2 基本的窗口渲染 42013.2.1 GDI设备环境 42013.2.2 像素格式 42113.2.3 OpenGL渲染环境 42613.3 综合应用 42713.3.1 创建窗口 42713.3.2 使用OpenGL渲染环境 43013.3.3 其他Windows消息 43313.4 Windows调色板 43413.4.1 颜色匹配 43413.4.2 调色板仲裁 43513.4.3 为OpenGL创建调色板 43613.4.4 调色板的创建和销毁 43913.5 OpenGL和Windows字体 44013.5.1 3D字体和文本 44113.5.2 2D字体和文本 44213.6 全屏渲染 44413.6.1 创建一个无边框窗口 44413.6.2 创建一个全屏窗口 44513.7 多线程渲染 44713.8 OpenGL和WGL扩展 44813.8.1 简单扩展 44813.8.2 使用新入口 44913.8.3 WGL扩展 44913.9 小结 47013.10 参考 470第14章 MacOS X上的OpenGL 48214.1 基础知识 48214.1.1 框架 48214.1.2 使用GLUT API 48314.2 使用AGL和Carbon API 48314.2.1 像素格式 48314.2.2 管理渲染环境 48414.2.3 执行双缓冲渲染 48514.2.4 你的第一个AGL程序 48514.2.5 使用位图字体 49414.3 使用Cocoa API 50414.3.1 NSOpenGL类 50414.3.2 你的第一个Cocoa程序 50514.4 小结 51214.5 参考 512第15章 GLX:Linux上的OpenGL 51615.1 基础知识 51615.1.1 使用OpenGL和X11函数库 51615.1.2 使用GLUT函数库 51815.1.3 Linux上的OpenGL 51815.1.4 OpenGL模拟:Mesa 51915.2 X Window系统的OpenGL扩展 51915.2.1 X Window系统基础知识 51915.2.2 选择画面 51915.2.3 管理OpenGL渲染环境 52015.2.4 创建OpenGL窗口 52115.2.5 双缓冲窗口 52115.2.6 综合应用 52115.3 为OpenGL创建位图字体 52815.4 离屏渲染 53715.4.1 使用GLX Pixmap 53715.4.2 使用Pbuffer 54115.5 使用Motif函数库 54615.5.1 GLwDrawingArea和GLwMDrawingArea 54615.5.2 回调资源 54715.5.3 函数 54815.5.4 综合应用 54915.6 小结 55715.7 参考 557第三部分 下一代OpenGL第16章 缓冲区对象 56516.1 顶点数组 56616.1.1 生成球状微粒云彩 56616.1.2 启用顶点数组 56716.1.3 使用更多的球体 56816.2 迁移到缓冲区对象 56916.2.1 缓冲区对象管理 57016.2.2 用缓冲区对象进行渲染 57116.3 把数据载入到缓冲区对象 57116.3.1 把数据复制到缓冲区对象 57116.3.2 直接映射缓冲区对象 57216.4 补遗 57516.5 小结 57616.6 参考 576第17章 遮挡查询 58117.1 遮挡查询之前的世界 58117.2 边框 58417.3 对查询对象进行查询 58717.4 小结 58917.5 参考 589第18章 深度纹理和阴影 59318.1 作为光源 59418.1.1 使场景正好占据整个窗口 59418.1.2 去掉华而不实的东西 59418.2 一种新类型的纹理 59718.3 首先绘制阴影 59718.4 然后是光照 59818.4.1 投影阴影贴图:“为什么” 59818.4.2 投影阴影贴图:“怎么做” 59918.4.3 阴影比较 60018.5 只用两个就够了 60518.6 关于多边形偏移 60618.7 小结 60618.8 参考 607第19章 可编程管线 60919.1 旧的被淘汰 60919.1.1 固定的顶点处理 60919.1.2 固定的片断处理 61119.2 新的占主导 61219.2.1 可编程顶点着色器 61219.2.2 固定功能胶水 61419.2.3 可编程片断着色器 61419.3 着色器扩展介绍 61519.3.1 低层扩展 61519.3.2 高层扩展 61719.4 小结 618第20章 低层着色(深入底层) 61920.1 管理低层着色器 61920.1.1 创建和绑定着色器 61920.1.2 载入着色器 62020.1.3 删除着色器 62120.1.4 设置扩展 62120.2 指令集 62220.2.1 常用指令 62220.2.2 专用于顶点的指令 62320.2.3 专用于片断的指令 62420.3 变量类型 62420.3.1 临时变量 62520.3.2 参数 62520.3.3 属性 62620.3.4 输出 62820.3.5 别名 62920.3.6 地址 62920.4 输入和输出限定符 63020.4.1 输入取负 63020.4.2 输入Swizzle 63020.4.3 输出写入掩码 63020.4.4 输出限定 63020.5 资源消耗和队列 63120.5.1 解析器限制 63120.5.2 本地限制 63220.5.3 其他查询 63320.6 着色器选项 63320.6.1 位置不变性顶点选项 63420.6.2 雾应用片段选项 63420.6.3 精度提示片断选项 63420.7 小结 63420.8 参考 634第21章 高层着色 64421.1 管理高层着色器 64421.1.1 着色器对象 64421.1.2 程序对象 64621.1.3 设置扩展 64721.2 变量 64821.2.1 基本类型 64821.2.2 结构 64921.2.3 数组 65021.2.4 修饰符 65021.2.5 内置的变量 65021.3 表达式 65121.3.1 操作符 65121.3.2 数组访问 65221.3.3 构造函数 65221.3.4 成分选择 65321.4 控制流 65321.4.1 循环 65421.4.2 if/else 65421.4.3 discard 65421.4.4 函数 65421.5 小结 65621.6 参考 657第22章 顶点着色 66822.1 初次试验 66822.2 散射光照 67022.3 镜面光照 67222.4 改善镜面光照 67422.5 基于顶点的雾 68022.6 基于顶点的点大小 68322.7 自定义的顶点转换 68522.8 顶点混合 68722.9 小结 691第23章 片断着色器 69223.1 颜色转换 69223.1.1 灰度 69223.1.2 调棕色 69423.1.3 反色 69423.1.4 热信号 69623.1.5 基于片断的雾 69723.2 图像处理 69923.2.1 模糊 69923.2.2 锐化 70223.2.3 膨胀和侵蚀 70323.2.4 边缘检测 70523.3 光照 70723.3.1 散射光照 70723.3.2 多重镜面光照 71023.4 过程纹理贴图 71423.4.1 棋盘纹理 71423.4.2 沙滩球纹理 71823.4.3 玩具球纹理 72223.5 小结 727附录A 推荐读物 728A.1 其他优秀的OpenGL书籍 728A.2 3D图形书籍 728A.3 网站 728附录B 术语表 730附录C OpenGL ES 733C.1 数据类型的削减 733C.2 完全消除的特性 733C.3 大幅度削减了的功能 734C.3.1 纹理贴图 734C.3.2 光栅操作 734C.3.3 光照 735C.4 小结 735

媒体关注与评论

  本书包括以下内容:  ·在PC上创建三维物体。  ·在虚拟世界中移动物体或观察者。  ·利用在WINDWOS、MAC OS X和LINUX上实现更快的实时渲染的技巧。  ·利用OPENGL硬件加速。  ·创建交互式三维场景。  ·利用新的OPENGL着色语言和可编程图形硬件。  随书光盘包括:  ·所有示例程序的完整源代码。  ·GLUT函数库和用于WINDOWS的RENDERMONKEY。  ·RIGHT HEMISPHERE的DEEP EXPLORATION 演示版本。  ·完整的PDF格式的OPENGL规范。  ·附赠的OPENGL示例程序。


图书封面

图书标签Tags

广告

下载页面


OpenGL超级宝典 PDF格式下载



我们公司不用opengl,但是此书是非常不错的.我们公司不用opengl,但是此书是非常不错的.我们公司不用opengl,但是此书是非常不错的.我们公司不用opengl,但是此书是非常不错的.我们公司不用opengl,但是此书是非常不错的.我们公司不用opengl,但是此书是非常不错的.


此书确实不错,对我帮助挺大的。


我觉得挺好的,浅显易懂.比较适合初学者.


我看完之后,发觉还有一点不足:就是翻译的语句有时不是很附合中国人的习惯!长句多,要么不好理解!原英文版的书一定不错!


相关图书