基础知识
坐标系统
- 局部坐标
是指对象所在的坐标空间。 - 世界坐标
局部坐标到世界坐标的转换由模型矩阵完成。 - 观察空间(camara space/eye space)
观察空间就是将对象的世界空间坐标转换为观察者视野坐标,由viewMatrix进行变换,新坐标是相对于摄像机的位置和方向的。 - 剪裁空间
顶点着色器完成从对象坐标系到剪裁坐标系的转换。在顶点着色器的最后,所有在NDC外的坐标都会被裁掉。透视投影矩阵会修改每个顶点坐标的w值,使离观察者越远的顶点坐标w分量越大。x、y、z坐标都会跟w坐标进行比较,大于w或小于-w的坐标都会被剪裁掉。(先裁剪再投影)写的时候把所有坐标都放在-1到1中间会很不直观,所以投影矩阵会帮我们把指定范围内的三维坐标转换到二维标准化坐标系中。(但是如果只是片段的一部分在窗口外,opengl会重新构造一个三角形面片) - 屏幕空间
经过转换的坐标将被映射到glViewPort定义的屏幕空间,并被转化为片元(视口转换)。
线性代数的几何意义
- 线性空间
空间是一个对象集合,可以容纳对象的运动。线性空间中的任何一个对象都可以通过选取基向量构成的多项式来表达为向量的形式 - 基
一组基是一组线性无关的向量,n个基构成n维坐标系,每一个基对应一个坐标轴。正交基的模不为一说明局部坐标系存在缩放。 - 矩阵
空间中向量可以描述任意一个对象,矩阵可以描述该空间中的任何一个运动。用矩阵乘以向量使变换被施加到对象上。固定坐标系下对象的变换等价于固定对象所处坐标系的坐标系变换。
齐次坐标的意义:在3