OpenGL 3D转换:z-Aspect比率

时间:2014-11-04 16:51:51

标签: opengl projection-matrix 3dcamera

我在OpenGL(webgl)中进行3D透视投影,使用统一矩阵自己做。 Everthing工作正常,但我的宽高比为3:2(600px x 400px),这会扭曲所有渲染的几何体。

在2D中我曾经通过将x和y分别分别为1 /宽度和1 /高度来解决这个问题。

现在我也有担心的问题,而且我非常无知如何/在哪里转换z以不扭曲我的3:2宽高比。

模型矩阵似乎没有提供任何机会来做这个,我不知道在投影矩阵中的位置/做什么。

编辑: 投影矩阵:

@_pMatrix = [  
  1, 0.0, 0.0, 0.0,  
  0.0, 1, 0.0, 0.0,  
  0.0, 0.0, -(f + n) / (f - n), -1,  
  0.0, 0.0, -2.0 * n * f / (f - n), 0.0  
]  

列主要订单

编辑2: 奇怪的扭曲n< 1 img

1 个答案:

答案 0 :(得分:1)

您错过了投影矩阵中的*left*, *right*, *top*, *bottom*

 2*n      
-----     0       0        0
 r-l

         2*n
  0     -----     0        0
         t-b

 r+l     t+b    -(f+n)
-----   -----   ------    -1
 r-l     t-b     f-n

                -2*f*n     0
  0       0     ------
                 f-n

如果您定义(r-l)/(t-b) = 3/2以使查看量适合您的模型,那么您应该设置。

以下是一些描述各种投影矩阵及其衍生方式的幻灯片: http://www.cs.unm.edu/~angel/CS433/LECTURES/CS433_17.pdf

他们是Interactive Computer Graphics的作者爱德华·安吉尔(Edward Angel),这是我得到这个矩阵的地方。不幸的是,OpenGL Red Book似乎根本没有完成数学计算。