上面这篇文章已经推导出 MVP 矩阵,所有的物体都会停留到 的立方体内,下一步,就要把这个正方体画在屏幕上。
- 屏幕
- 元素为像素的二维数组
- 数组大小则为分辨率
- 典型的光栅成像设备
把东西画在屏幕上的过程,就是光栅化的过程。
- 像素 Pixel (FYI, short for “picture element”)
- 像素挺复杂的,但是本课中,我们可以简单地抽象地认为像素就是一个个带颜色的小方块。
- 我们认为像素中的颜色,都可以用 rgb (red, green, blue) 来表示。
什么是屏幕空间?(下面的定义和虎书略不同)
我们可以定义一个原点,向上是 Y,向右是 X。
我们定义像素坐标为 ,x 和 y 都为整数。例如下图蓝色的像素坐标为 。
如果屏幕分辨率为 ,那么像素的索引则从 到 。
像素 中心则为 。例如下图蓝色的像素坐标为 。
那么整个屏幕空间则从 覆盖到 。
那么我们就需要将 的立方体变换到屏幕空间上 。
变换过程中,我们暂时忽略 z,后面有其用处。
那么视口变换的矩阵则为:
矩阵包括:
宽高分别变成 width, height,又因为原本立方体宽高都为 2,因此得出 scale 部分。
平移部分,则是要把立方体移到应该在的中心点 ,也就是宽高的一半。
不变。
然后我们需要将这些二维的三角形,打散成像素,也就是光栅化的过程。
老虎有各种多边形, 经过变换后,就变成屏幕空间上的多边形,然后打散成像素。