🌤️

视口变换

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