Fundamentals of Computer Graphics, 4th Edition 这本书从算法和数学方面,介绍计算机图形学。而计算机图形学在很多领域都有相关应用,例如游戏开发,大量地使用计算机图形学,用于渲染各种漂亮的效果。
计算机硬件发展很快,而图形学涉及到各种不同硬件平台的API。但是这本书,将尽量不依赖于特定的API,从基本原理上,去介绍图形学相关的知识。
1. 主要应用
- 游戏
- 动漫
- 视觉特效
- 动画电影
- CAD/CAM
- 模拟仿真
- 医学影像
- 信息可视化
2. 图形API
- Toolkits
- Direct3D/OpenGL
3. 图形流水线
- 现在的计算机,拥有很强大的3D图形流水线。这个子系统用于高效的绘制3D图元。这些子系统对于处理3D三角形和共享顶点进行了深度优化。在这个流水线中最基本的操作是将3D顶点的位置,转换成2D屏幕坐标,然后绘制在屏幕上。
- 对于绘制三角形的顺序,现在几乎总是使用Z缓冲技术来解决。
- 能图形流水线中的几可操作,可以以四维坐标空间来实现。而四维坐标空间,使用4x4的矩阵来描述。
- LOD可以用于优化效率,当模型距离较远时,可以通过减少三角形来提高渲染效率,而较近时,则使用高精度的模型。
4. 数值问题
IEEE Standards Association, 1985
三个重要的值
- Infinity (∞)
- Minus infinity (−∞)
- Not a number (NaN)
5. 效率
没有什么魔法规则能让代码更有效率。涉及到效率问题时,要仔细去权衡。
- 注意内存访问模式
- 写清晰简单的代码
- 使用Optimized模式编译代码
- 使用分析工具找到瓶颈
- 检查数据结构
- !!! 对于现代CPU来说,使用
整型
代替浮点型
已经不能带来什么效率提升。
6. 基本的数据结构
-
Vector2
通常用于存储 x, y 值
-
Vector3
通常用于存储 x, y, z 值
-
Hvector
用于存储 x, y, z, w 值
-
Transform
用于存储 4x4 矩阵,用于表示转换
-
RGB
用于存储 红, 绿, 蓝 三色的值
-
Image
RGB颜色值的二维数组,通常用于存储输出的图像
7. 调试图形程序
没有什么具体的标准
- 输出看看
- 使用断点