Modelview&投影矩阵

时间:2013-10-03 12:03:19

标签: opengl projection model-view

可能是一个奇怪的问题,但我对OpenGL的3D相当缺乏经验,所以有人可以告诉我如何在以下情况下绘制一个简单的2D框(C ++首选):

  GL_PROJECTION_MATRIX = [1.125, 0.00, 0.00, 0.0]
                         [0.000, 2.00, 0.00, 0.0]
                         [0.000, 0.00, -1.0, 0.0]
                         [0.000, -1.0, 0.00, 1.0]

  GL_MODELVIEW_MATRIX  = [1.0, 0.0, 0.0, 0.0]
                         [0.0, 1.0, 0.0, 0.0]
                         [0.0, 0.0, 1.0, 0.0]
                         [0.0, 0.0, 0.0, 1.0]

由于外部代码,无法更改这两项。

1 个答案:

答案 0 :(得分:2)

GL将执行的固定功能是先将每个顶点乘以模型视图,然后乘以投影矩阵,最后除以(剪辑空间)w分量以达到NDC空间。在NDC空间中,观察体积由沿着所有3个维度的立方体[-1,1]表示。

因此,通常,在了解所使用的矩阵后,您可以通过反转转换的转换并将NDC立方体的角点转换回来将观察体积投射回眼睛或物体空间(假设矩阵可以反转)通常是这样的。)

假设固定函数GL的典型矩阵存储顺序,该投影矩阵是某种正交投影,因此没有透视失真,观察体积将是眼睛空间/物体空间中的长方体。

如果使用你指定的矩阵,那么在[-0,8889,0.8889](左,右)中的x中绘制所有内容,在[0,1](底部/顶部)中绘制y,在[-1]中绘制z ,1](远!,近)应该是可见的。