第1章 Hello OpenGL 1
1.1 从这里开始认识 1
1.2 OpenGL是什么 1
1.3 如何使用OpenGL 2
1.4 Hello OpenGL 6
1.5 辅助工具 22
1.6 不含位置属性的顶点 29
1.7 总结 31
1.8 问题 31
第2章 纹理 33
2.1 二维纹理 33
2.2 其他类型的纹理 40
2.3 多个纹理 43
2.4 多个渲染方法 46
2.5 总结 48
2.6 问题 48
第3章 空间和矩阵 50
3.1 如何理解矩阵 50
3.2 空间和矩阵的关系 52
3.3 Pipeline中的空间 60
3.4 实例化渲染 61
3.5 总结 63
3.6 问题 63
第4章 几何着色器 64
4.1 介绍 64
4.2 示例:渲染法线 66
4.3 总结 69
4.4 问题 69
第5章 光照 70
5.1 Blinn-Phong光照模型 70
5.2 光源 70
5.3 反射光 70
5.4 Blinn-Phong算法 75
5.5 同时使用多个光源 77
5.6 阴影 80
5.7 凹凸映射 80
5.8 噪声 84
5.9 总结 88
5.10 问题 88
第6章 帧缓存 89
6.1 名词术语 90
6.2 附着点 90
6.3 将Texture附着到Frameb uffer 91
6.4 附着Renderbuffer 95
6.5 示例:Render to Texture 95
6.6 总结 99
6.7 问题 100
第7章 阴影 101
7.1 Shadow Mapping 101
7.2 Shadow Volume 110
7.3 模板缓存的初始化 122
7.4 多光源下的阴影 123
7.5 总结 124
7.6 问题 124
第8章 拾取 125
8.1 基础 125
8.2 在DrawArraysCmd命令下的拾取 140
8.3 在DrawElementsCmd命令下的拾取 146
8.4 拖拽顶点 157
8.5 总结 162
8.6 问题 163
第9章 文字 164
9.1 固定尺寸且始终面向Camera 164
9.2 字形信息 169
9.3 三维世界的文字 174
9.4 总结 177
9.5 问题 177
第10章 简单的用户界面 178
10.1 指定区域的贴图 178
10.2 控件的布局机制 179
10.3 控件的事件机制 188
10.4 CtrlImage 193
10.5 CtrlLabel 196
10.6 CtrlButton 200
10.7 总结 202
10.8 问题 202
第11章 轨迹球 203
11.1 轨迹球 203
11.2 使用 204
11.3 设计 205
11.4 四元数 209
11.5 总结 210
11.6 问题 210
第12章 体渲染 211
12.1 什么是体渲染 211
12.2 静态切片 212
12.3 动态切片 215
12.4 Raycasting 217
12.5 总结 223
12.6 问题 224
第13章 半透明渲染 225
13.1 跳跃着色法 225
13.2 与顺序无关的半透明渲染 226
13.3 Front to Back Peeling 235
13.4 总结 240
13.5 问题 240
第14章 Transform Feedback Object 241
14.1 Transform Feedback如何工作 241
14.2 使用Transform Feedback Object 244
14.3 轮流更新 245
14.4 粒子系统 251
14.5 总结 254
14.6 问题 254
第15章 Compute Shader 255
15.1 Compute Shader简介 255
15.2 图像处理 257
15.3 粒子系统 261
15.4 总结 262
15.5 问题 263
附录 264
附录A Github入门 264
附录B C#和面向对象入门 277
附录C 解析简单的wavefront(*.obj)文件格式 298
附录D 自制体数据的2种方法 302