可能是一个奇怪的问题,但我对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]
由于外部代码,无法更改这两项。
答案 0 :(得分:2)
GL将执行的固定功能是先将每个顶点乘以模型视图,然后乘以投影矩阵,最后除以(剪辑空间)w分量以达到NDC空间。在NDC空间中,观察体积由沿着所有3个维度的立方体[-1,1]表示。
因此,通常,在了解所使用的矩阵后,您可以通过反转转换的转换并将NDC立方体的角点转换回来将观察体积投射回眼睛或物体空间(假设矩阵可以反转)通常是这样的。)
假设固定函数GL的典型矩阵存储顺序,该投影矩阵是某种正交投影,因此没有透视失真,观察体积将是眼睛空间/物体空间中的长方体。
如果使用你指定的矩阵,那么在[-0,8889,0.8889](左,右)中的x中绘制所有内容,在[0,1](底部/顶部)中绘制y,在[-1]中绘制z ,1](远!,近)应该是可见的。