投影矩阵投影到子空间从较高维空间中的向量。我本来期望在OpenGL投影矩阵投影中的R 3 一个点到2维平面。这似乎得到了互联网上很多文献的支持。许多网站暗示投影矩阵将3D世界投影到飞机上,这就是绘制的。不过,我感觉大多数这些解释都在跳过几个步骤。他们中的许多人似乎互相矛盾,所以我想要澄清我从我自己的分析中得出的结论。OpenGL中的投影矩阵真的是“投影矩阵”吗?
可有人请确认(或如果错误是正确的)是:
- 在OpenGL的投影变换是不实际的投影矩阵,而是把一个点到剪辑空间(这仍然是一部分将R 3 域)和实际投影到二维平面上后发生,因为管道的固定功能。
- 投影矩阵不适用的透视分割;但是它确实需要设置w坐标,以便稍后发生透视分割(作为管线的固定功能),点正确放置在NDC的内部或外部。
- 剪辑空间上的X,Y轴之间的箱(-1,+ 1),和(n,f)关于z轴而NDC是介乎一个盒子(-1,+ 1)上的所有轴。
我分析以下投影矩阵来上述结论:
[ 2n/(r-l) 0 (r+l)/(r-b) 0 ]
[ 0 2n/(t-b) (t+b)/(t-b) 0 ]
[ 0 0 -(f+n)/(f-n) -2fn/(f-n) ]
[ 0 0 -1 0 ]
从那个分析我的结论是,这是截锥内的任何点会沿x,y中的剪辑的边界内轴;它可能在沿着z轴的边界之外,但是一旦发生透视分割(现在w是旧的-z),该点将完全位于剪辑空间内。
由此我也得出结论:对于MVP转换后可见的点,它的x,y和z/w坐标必须在+/- 1之间,并且透视分割和实际投影发生在顶点之后着色器。
如果具体到现代的OpenGL(3.3内核或更高版本)适用的答案只有请。