0

可能是一个奇怪的问题,但我对 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]

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

4

1 回答 1

2

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

因此,一般来说,知道所使用的矩阵,您可以通过反转该变换链并将 NDC 立方体的角点回溯(假设矩阵可以反转,通常是这样)。

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

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

于 2013-10-03T18:19:33.337 回答