OpenGL 中的倒 X 轴

Inverted X axis in OpenGL

X 轴在我的 OpenGL 测试程序中似乎是倒置的...

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

我使用 this code 作为 projection/view 矩阵,所以我不认为它来自那里...是否有任何 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

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

画一个标准的右手坐标系:

   |y
   |
   |
   |________x
  /
 /
/z

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

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

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

       y|
        |  /z
        | /
x_______|/

如您所见,从这个有利位置来看,x 轴现在从右到左,这意味着 x 值较大的点现在位于 x 值较小的点的左侧。

这正是您的渲染显示的内容。蓝色立方体的x坐标比红色立方体大,所以从这个方向看,蓝色立方体出现在红色立方体的左边。