OpenGL中的反转X轴

时间:2015-03-20 14:37:41

标签: opengl

在我的OpenGL测试程序中X轴似乎是反转的......

红色立方体位于(0,0,0),白色位于(0,0,1),蓝色位于(1,0,0),但它出现在左侧红色立方体。

enter image description here

我使用this code作为投影/视图矩阵,所以我认为它不是来自那里......是否有任何OpenGL参数可以做到这一点?

修改

以下是相机处于(1.57,4.54,-1.23)时矩阵的示例,其中水平角为6.09rad,垂直角为-0.97rad:

投影矩阵:

 1.34  0     0     0
 0     1.79  0     0
 0     0    -1    -1
 0     0    -0.02   0

查看矩阵:

-0.98  -0.15   0.1    0
-2.14   0.56   0.82   0
-0.18   0.81  -0.55   0
 1.32  -1.31  -4.59   1

1 个答案:

答案 0 :(得分:1)

这只是您正在使用的相机位置的自然结果。

想象一个标准的右手坐标系:

   |y
   |
   |
   |________x
  /
 /
/z

在这个草图中,x从左到右,y从下到上,z到我们。

这意味着如果您使用具有 z值的相机位置,则此相机将看到与此草图对应的方向的xy平面。这反过来意味着具有较大x值的点位于具有较小x值的点的右侧。

现在,如果您使用具有 z值的相机位置(在您的示例中就是这种情况),整个事情就会转变。从相机看到的坐标系现在看起来更像是这样:

       y|
        |  /z
        | /
x_______|/

正如您所看到的,从这个有利位置,x轴现在从右向左,这意味着具有较大x值的点现在留下具有较小x值的点。

这正是渲染所显示的内容。蓝色立方体具有比红色立方体更大的x坐标,因此当从该方向观察时,它出现在红色立方体的左侧。