Math 为什么正交投影矩阵不起作用?

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

我试图用正交投影渲染位于平面(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 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