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. 调试图形程序

没有什么具体的标准

  • 输出看看
  • 使用断点