我正在尝试使用正交投影渲染位于平面 (z=0) 中的一些四边形。看完Formula for a orthogonal projection matrix?我确实设置了投影矩阵但我认为我做错了什么。
我的第一次尝试是下面的矩阵。 W 和 H 是我想要的视口(viewport)的宽度和高度,在以下示例中为 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 与视口(viewport)的 X 和 Y 相匹配。然而,这是我沿 X 轴移动四边形时发生的情况:
沿 Y 轴移动同样得到意想不到的结果:
如何修复我的矩阵,使 3D 空间的 X 轴和 Y 轴与视口(viewport)的 X 轴和 Y 轴匹配?非常感谢。
最佳答案
这个投影矩阵其实是正确的。问题出在 quad 翻译代码中,抱歉搞砸了。
关于math - 为什么我的正交投影矩阵不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151328/