Math 为什么正交投影矩阵不起作用?
我试图用正交投影渲染位于平面(z=0)中的一些四边形。阅读后我确实设置了一个投影矩阵,但我认为我做错了什么 我的第一次尝试是以下矩阵。W、 H是所需视口的宽度和高度,在以下示例中为640x640:Math 为什么正交投影矩阵不起作用?,math,rendering,3d,stage3d,projection-matrix,Math,Rendering,3d,Stage3d,Projection Matrix,我试图用正交投影渲染位于平面(z=0)中的一些四边形。阅读后我确实设置了一个投影矩阵,但我认为我做错了什么 我的第一次尝试是以下矩阵。W、 H是所需视口的宽度和高度,在以下示例中为640x640: ˹ 2/w 0 0 0 ˺ | 0 2/h 0 0 | | 0 0 0 0 | ˻ 0 0 0 1 ˼ 以下是我渲染左上角位于(0,0,0)中的四边形时获得的结果: 由于垂直翻转,我将矩阵更改为: ˹ 2/w 0 0 0 ˺ | 0 -2/h
˹ 2/w 0 0 0 ˺
| 0 2/h 0 0 |
| 0 0 0 0 |
˻ 0 0 0 1 ˼
以下是我渲染左上角位于(0,0,0)中的四边形时获得的结果:
由于垂直翻转,我将矩阵更改为:
˹ 2/w 0 0 0 ˺
| 0 -2/h 0 0 |
| 0 0 0 0 |
˻ 0 0 0 1 ˼
我得到:
然后我试着移动我的四边形,结果出乎意料。我希望3D空间的X和Y与视口的X和Y相匹配。但是,以下是我沿X轴移动四边形时发生的情况:
沿Y轴移动会产生同样意想不到的结果:
如何修复矩阵,使三维空间的X轴和Y轴与视口的X轴和Y轴匹配?非常感谢。这个投影矩阵实际上是正确的。问题出在四位翻译代码中,很抱歉弄糟了。您错过了远近剪裁。试试这个
2/viewWidth 0 0 0
0 -2/viewHeight 0 0
0 0 1/(far-near) -near/(far-near)
0 0 0 1