Screen Space
从NDC(三维)到我们的屏幕空间(二维),也就是真正要显示在屏幕上;首先NDC空间范围是到,而屏幕空间表示像素范围对应的是到例如我们屏幕分辨率为那么就是,也就是说我们需要从NDC的到映射到屏幕的到;假设有一点顶点为,是左下角的一个顶点 (也就是正交变换里我们计算并验证中的那个小盒子上的一个边界点)经过一个正交变换后是,假设有一屏幕长为,宽为顶点也就是NDC中的会变换到屏幕空间中的,同理如果是顶点,NDC中的会变成屏幕空间中的,我们假设另外一个顶点,对应NDC中的会变成屏幕空间中的

Figure 1
根据这些我们可以得到我们的视口变换矩阵
(矩阵中的为是为保持值不变) 来验证一下,假设我们的屏幕是的,则矩阵为
顶点,NDC中为,则
顶点,NDC中为,则
映射到屏幕坐标像素点(也就是说最左下的那个小盒子的边界点正好映射到屏幕的左下角)
如果长宽是不一样的
长宽不一样我们依然可以处理,只不过要多一个概念,
它是一个比例
左上图是比例为的情况下,如果我们改变了窗口大小,例如改为了,也就是比例为,如果我们此时什么都不做,则我们会得到左下的结果(仔细想想,为什么,是因为我们的视口变换矩阵,像素是一一对应的,即使窗口大小变了,但映射关系并没有变)所以我们如果才能得到右上的结果呢? 很简单,在进行正交变换或者透视变换的时候将方向也就是水平方向按照比例收缩一些