Opengl es 如何在ortographic投影矩阵中正确设置近/远剪裁?

Opengl es 如何在ortographic投影矩阵中正确设置近/远剪裁?,opengl-es,matrix,three.js,webgl,projection,Opengl Es,Matrix,Three.js,Webgl,Projection,我想作出以下预测: x' = 2*x - z y' = -2*y - z z' = -z 我提出了这个矩阵: 2, 0, 0, 0, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, screen_width 它的工作原理与预期基本一致,除了: 它在非完美方形屏幕中变形 它进行近/远剪裁,从屏幕上删除一些对象。我不想那样 因此,问题归结为:如何在这个矩阵上设置近/远FOV,以及如何更新它以不仅考虑屏幕宽度,而且考虑宽/高比 注意:讨论中的软件使用了Th

我想作出以下预测:

x' = 2*x - z
y' = -2*y - z
z' = -z
我提出了这个矩阵:

2,  0,  0,  0,
0,  -2, 0,  0,
0,  0,  -1, 0,
0,  0,  0,  screen_width
它的工作原理与预期基本一致,除了:

  • 它在非完美方形屏幕中变形
  • 它进行近/远剪裁,从屏幕上删除一些对象。我不想那样
  • 因此,问题归结为:如何在这个矩阵上设置近/远FOV,以及如何更新它以不仅考虑屏幕宽度,而且考虑宽/高比

    注意:讨论中的软件使用了Three.js,但我想它使用了与OpenGL相同的约定,因此我将其标记为Three.js。

    关于正交投影。由此:

    如果您在firefox中查看页面(chrome仍然不支持MathML),您可以编写一个函数来生成这个矩阵,给出远/近/右/左/上/下

    ,它给出了用于正交矩阵的等式


    获得正确的Z和W行对于近/远平面和非线性深度非常重要。如果使用(2,-2)缩放得到了很好的结果,只需将最后两行替换为glOrtho行,就可以设置。确保不要选择相距太远的“近/远”值,否则深度值开始相交,就会出现z形格斗。

    这没有任何意义。我使用这些槽来确定每个轴对投影的影响程度。这个公式没有提供我需要的信息。