在我的OpenGL测试程序中X轴似乎是反转的......
红色立方体位于(0,0,0),白色位于(0,0,1),蓝色位于(1,0,0),但它出现在左侧红色立方体。
我使用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
答案 0 :(得分:1)
这只是您正在使用的相机位置的自然结果。
想象一个标准的右手坐标系:
|y
|
|
|________x
/
/
/z
在这个草图中,x从左到右,y从下到上,z到我们。
这意味着如果您使用具有正 z值的相机位置,则此相机将看到与此草图对应的方向的xy平面。这反过来意味着具有较大x值的点位于具有较小x值的点的右侧。
现在,如果您使用具有负 z值的相机位置(在您的示例中就是这种情况),整个事情就会转变。从相机看到的坐标系现在看起来更像是这样:
y|
| /z
| /
x_______|/
正如您所看到的,从这个有利位置,x轴现在从右向左,这意味着具有较大x值的点现在留下具有较小x值的点。
这正是渲染所显示的内容。蓝色立方体具有比红色立方体更大的x坐标,因此当从该方向观察时,它出现在红色立方体的左侧。