新書推薦:
《
石油帝国的兴衰:英国的工业化与去工业化
》
售價:NT$
445.0
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
根源、制度和秩序:从老子到黄老学(王中江著作系列)
》
售價:NT$
550.0
《
索恩丛书·北宋政治与保守主义:司马光的从政与思想(1019~1086)
》
售價:NT$
345.0
《
掌故家的心事
》
售價:NT$
390.0
《
农为邦本——农业历史与传统中国
》
售價:NT$
340.0
《
郊庙之外:隋唐国家祭祀与宗教 增订版 (三联·哈佛燕京学术丛书)
》
售價:NT$
480.0
《
小麦文明:“黄金石油”争夺战
》
售價:NT$
445.0
|
內容簡介: |
本书详细介绍了OpenGL4.5(包括4.4、SPIRV和扩展功能),以及OpenGL着色语言的方方面面。全书共12章:第1章概述OpenGL主要特性和功能;第2章讨论OpenGL中主要的特性可编程着色器;第3章介绍使用OpenGL进行几何体绘制的各种方法,以及一些可以让渲染更为高效的优化手段;第4章阐释OpenGL对于颜色的处理过程,包括像素的处理、缓存的管理以及像素处理相关的渲染技术;第5章介绍在一个二维计算机屏幕上表现三维场景的操作细节;第6章讨论将几何模型与图像结合来创建真实的、高质量的三维模型的方法;第7章介绍计算机图形的光照效果模拟方法;第8章介绍使用可编程着色器生成纹理和其他表面效果的方法细节;第9章解释OpenGL管理和细分几何表面的着色器功能;第10章介绍在OpenGL渲染流水线中使用着色器进行几何体图元修改的特别技术;第11章介绍使用OpenGL帧缓存和缓存内存实现高级渲染技术和非图形学应用的相关方法;第12章介绍了新的着色器阶段,将通用计算的方法融合到OpenGL的渲染流水线当中。
|
目錄:
|
Contents?目录
推荐语
译者序
前 言
致 谢
第1章 OpenGL概述1
1.1 什么是OpenGL1
1.2 初识OpenGL程序2
1.3 OpenGL语法6
1.4 OpenGL渲染管线7
1.4.1 准备向OpenGL传输数据8
1.4.2 将数据传输到OpenGL8
1.4.3 顶点着色9
1.4.4 细分着色9
1.4.5 几何着色9
1.4.6 图元装配9
1.4.7 剪切9
1.4.8 光栅化9
1.4.9 片元着色10
1.4.10 逐片元的操作10
1.5 第一个程序:深入分析11
1.5.1 进入main函数11
1.5.2 OpenGL的初始化过程12
1.5.3 第一次使用OpenGL进行渲染21
第2章 着色器基础24
2.1 着色器与OpenGL25
2.2 OpenGL的可编程管线25
2.3 OpenGL着色语言概述27
2.3.1 使用GLSL构建着色器27
2.3.2 存储限制符33
2.3.3 语句36
2.3.4 计算的不变性40
2.3.5 着色器的预处理器42
2.3.6 编译器的控制44
2.3.7 全局着色器编译选项44
2.4 数据块接口45
2.4.1 uniform块45
2.4.2 指定着色器中的uniform块46
2.4.3 从应用程序中访问uniform块47
2.4.4 buffer块53
2.4.5 inout块、位置和分量53
2.5 着色器的编译54
2.6 着色器子程序59
2.6.1 GLSL的子程序设置59
2.6.2 选择着色器子程序60
2.7 独立的着色器对象62
2.8 SPIR-V64
2.8.1 选择SPIR-V的理由64
2.8.2 SPIR-V与OpenGL66
2.8.3 使用GLSL在OpenGL中生成SPIR-V67
2.8.4 Glslang69
2.8.5 SPIR-V中包含了什么69
第3章 OpenGL绘制方式70
3.1 OpenGL图元70
3.1.1 点71
3.1.2 线、条带与循环线72
3.1.3 三角形、条带与扇面72
3.2 OpenGL缓存数据75
3.2.1 创建与分配缓存75
3.2.2 向缓存输入和输出数据77
3.2.3 访问缓存的内容81
3.2.4 丢弃缓存数据86
3.3 顶点规范86
3.3.1 深入讨论VertexAttribPointer87
3.3.2 静态顶点属性的规范90
3.4 OpenGL的绘制命令92
3.4.1 图元的重启动99
3.4.2 多实例渲染102
第4章 颜色、像素和片元112
4.1 基本颜色理论113
4.2 缓存及其用途114
4.2.1 缓存的清除116
4.2.2 缓存的掩码117
4.3 颜色与OpenGL118
4.3.1 颜色的表达与OpenGL118
4.3.2 平滑数据插值119
4.4 片元的测试与操作121
4.4.1 剪切测试122
4.4.2 多重采样的片元操作123
4.4.3 模板测试124
4.4.4 模板的例子125
4.4.5 深度测试127
4.4.6 融混129
4.4.7 逻辑操作133
4.4.8 遮挡查询134
4.4.9 条件渲染138
4.5 多重采样139
4.6 逐图元的反走样141
4.6.1 线段的反走样142
4.6.2 多边形的反走样143
4.7 像素数据的读取和拷贝143
4.8 拷贝像素矩形145
第5章 视口变换、裁减、剪切与反馈147
5.1 观察视图148
5.1.1 视图模型148
5.1.2 相机模型148
5.1.3 正交视图模型151
5.2 用户变换152
5.2.1 矩阵乘法的回顾153
5.2.2 齐次坐标155
5.2.3 线性变换与矩阵157
5.2.4 法线变换167
5.2.5 OpenGL矩阵168
5.3 OpenGL变换170
5.3.1 高级技巧:用户裁减和剪切172
5.3.2 OpenGL变换的控制173
5.4 transform feedback174
5.4.1 transform feedback对象175
5.4.2 transform feedback缓存176
5.4.3 配置transform feedback的变量179
5.4.4 transform feedback的启动和停止185
5.4.5 transform feedback的示例:粒子系统187
第6章 纹理与帧缓存192
6.1 纹理综述193
6.2 基本纹理类型194
6.3 创建并初始化纹理195
6.4 指定纹理数据200
6.4.1 显式设置纹理数据200
6.4.2 从缓存中加载纹理202
6.4.3 从文件加载图像203
6.4.4 获取纹理数据206
6.4.5 纹理数据的排列布局207
6.5 纹理格式211
6.5.1 内部格式211
6.5.2 外部格式214
6.6 压缩纹理216
6.7 采样器对象218
6.8 纹理的使用220
6.8.1 纹理坐标222
6.8.2 排列纹理数据225
6.8.3 使用多重纹理227
6.9 复杂纹理类型229
6.9.1 3D纹理229
6.9.2 纹理数组230
6.9.3 立方体映射纹理231
6.9.4 阴影采样器236
6.9.5 深度-模板纹理237
6.9.6 缓存纹理238
6.10 纹理视图240
6.11 滤波方式243
6.11.1 线性滤波243
6.11.2 使用和生成mipmap245
6.11.3 计算mipmap层次249
6.11.4 mipmap细节层次的控制250
6.12 高级纹理查询函数250
6.12.1 显式的细节层次控制250
6.12.2 显式的梯度设置251
6.12.3 带有偏移参数的纹理获取函数251
6.12.4 投影纹理252
6.12.5 在着色器中执行纹理查询253
6.12.6 纹素收集255
6.12.7 组合功能的特殊函数255
6.13 无绑定纹理256
6.13.1 纹理句柄256
6.13.2 纹理驻留257
6.13.3 采样无绑定纹理258
6.14 稀疏纹理259
6.14.1 稀疏纹理的数据提交259
6.14.2
|
內容試閱:
|
前言?PrefaceOpenGL图形系统是图形硬件的一种软件接口(GL表示Graphics Library,即图形库)。它使得用户可以创建交互式的程序以产生运动的三维对象的颜色图像。通过OpenGL,我们可以使用计算机图形学技术产生逼真的图像,或者通过一些虚构的方式产生虚拟的图像。这本指南将告诉你如何使用OpenGL图形系统进行编程,得到你所期望的视觉效果。
本书的主要内容本书中包含以下章节:
第1章对OpenGL可以完成的工作进行了概览。它还提供了一个简单的OpenGL程序并解释了一些本质性的编程细节,它们可能会用于后续的章节中。
第2章讨论了OpenGL中最主要的特性着色语言和SPIR-V,并介绍了它们在应用程序中的初始化和使用方法。
第3章介绍了使用OpenGL进行几何体绘制的各种方法,以及一些可以让渲染更为高效的优化手段。
第4章解释了OpenGL对于颜色的处理过程,包括像素的处理、缓存的管理,以及像素处理相关的渲染技术。
第5章给出了将三维场景表现在一个二维计算机屏幕上的操作细节,包括各种几何投影类型的数学原理和着色器操作。
第6章讨论了将几何模型与图像结合来创建真实的、高质量的三维模型的方法。
第7章介绍了计算机图形的光照效果模拟方法,主要是这类方法在可编程着色器中的实现。
第8章介绍了使用可编程着色器生成纹理和其他表面效果的方法细节,从而增强真实感和其他的渲染特效。
第9章解释了OpenGL管理和细分几何表面的着色器功能。
第10章介绍了在OpenGL渲染流水线中使用着色器进行几何体图元修改的一种特殊技术。
第11章介绍了使用OpenGL帧缓存和缓存内存实现高级渲染技术和非图形学应用的相关方法。
第12章介绍了最新的着色器阶段,将通用计算的方法融合到OpenGL的渲染管线当中。
此外,我们也提供了一系列作为参考的附录内容。
附录A介绍了本书示例程序中用到的一些第三方支持库。GLFW是可移植的,它可以用来实现更简短也更加可读的代码示例。而GL3W负责处理应用程序与OpenGL函数之间的绑定关系。
附录B介绍了OpenGL体系中的其他API,包括用于嵌入式和移动平台系统的OpenGL ES,以及用于Web浏览器内的交互式3D应用程序的WebGL。
附录C提供了有关OpenGL着色语言的详细参考文档。
附录D列出了OpenGL维护的所有状态变量,并介绍了获取其值的方法。
附录E介绍了矩阵变换相关的一些数学方法。
附录F对于OpenGL中所用到的浮点数格式做出了概述。
附录G介绍了OpenGL中最新的调试特性。
附录H给出了有关uniform缓存的使用的参考文档,其中使用了OpenGL定义的标准内存布局。
本版中的新特性本版《OpenGL编程指南》已经针对最新的OpenGL 4.5进行了修订和更新。我们知道上一版是对以前版本的《OpenGL编程指南》内容的一次颠覆,而这一版则是在此基础上进行了校对,修订了错误,重写了一些内容以便让读者更加愉悦地阅读。从程序开发的角度来说,OpenGL 4.5版本所带来的最重大的特性变更就是直接状态访问(direct state access),这是对OpenGL程序开发模型和对象访问机制的一次重大革新。此外,我们也继续尝试将越来越多的功能移植到图形处理器硬件中,因此本书将着重于对着色器功能和GPU处理机制的讲解。
需要在阅读本书之前掌握的知识本书假设你已经了解了使用C语言进行编程的方法(我们将使用少量的C程序,如果你对C语言已经比较熟悉的话,应该会比较容易理解它们),并且具有一定的数学背景(几何、三角学、线性代数、微积分以及微分几何)。即使对计算机图形学技术没有太多的经验或者一无所知,你也可以学习和理解本书中讨论的大部分内容。当然,计算机图形学是一个不断延展的学科,因此你也许还需要阅读以下补充内容来丰富自己的知识。
《Computer Graphics: Principles and Practice》第3版,John F. Hughes、Andries van Dam、Morgan McGuire、David F. Sklar、James D. Foley、Steven K. Feiner和Kurt Akeley著(Addison-Wesley,2013年出版):这本书是有关计算机图形学的一本百科全书,它包含了大量有价值的信息,不过在阅读之前,你最好已经对这门学科有了一定的了解。
《OpenGL SuperBible: Comprehensive Tutorial and Reference》第7版,Graham Sellers、Richard S. Wright Jr.、Nicolas Haemel著(Addison-Wesley,2015年出版):这本书采用教程的形式编写,即使是对计算机图形学一无所知的读者也可以从这本循循善诱的指导书中开始学习OpenGL。
《OpenGL Insights》,Patrick Cozzi和Christophe Riccio著(A. K. Peters,2012年出版):这是一本有关OpenGL高级技巧的论文集,包括一些资深开发者、研究者以及一线工作者的感悟。每篇文章都会专注于某一个特定的技术领域,而这本书也会成为从事相关行业的读者的极佳的灵感来源。
另一个可以有组织地进行系统学习的地方就是OpenGL网站。该网站包含软件、示例程序、文档、FAQ、讨论版以及新闻页面。如果想要搜索OpenGL相关问题的答案,那么这里是一个好的开始:
http:www.ope
|
|