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坐标比红色立方体大,所以从这个方向看,蓝色立方体出现在红色立方体的左边。
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坐标比红色立方体大,所以从这个方向看,蓝色立方体出现在红色立方体的左边。