viewport用来把渲染限制在屏幕的一部分。
具体通过设置left, top, width, height来达到。
vertex shader输出的vector是通过ModelMatrix, ViewMatrix, ProjectMatrix转换过的结果。
形如:(x,y,z,w) 这个坐标形式称作,clipping space, clipping space当然是clip了。
结果再乘以viewport的变换矩阵:
| width/2 0 0 0|
| 0 -height/2 0 0|
|0 0 MaxZ-MinZ 0|
|left+width/2 right+height/2 MinZ 1|
成为homogeneous space的坐标
然后x,y,z各自除以w,
成为screen space的坐标。
而这里重点所说的viewport,我们可以看成对单位话过的坐标进行缩放和偏移,从而把[-1,1]之间的坐标纳入viewport所规划的矩阵中。
进而可以知道左上较是(-1,1), 右下脚是(1,-1)。