OpenGL:如何更改坐标设置?

OpenGL:如何更改坐标设置?,opengl,Opengl,据我所知,OpenGL使用右手坐标系,至少在剪辑空间中是这样工作的: 右X点 Y向上指 Z指向屏幕 这意味着,在不修改用于变换的所有矩阵的情况下,世界空间坐标的工作方式如下: X-Z平面是水平的 X-Y和Z-Y平面是垂直的 如果我想改变它,使Z轴指向上,该怎么办?我怎么能这样做呢?我曾考虑过将所有矩阵乘以旋转矩阵,旋转矩阵只需将所有坐标移动90度,或者在将数据发送到GPU后,我可以更改向量的Y和Z分量,但这些看起来更像是权宜之计,而不是实际的解决方案,如果对场景中的每个网格执行,它们也可

据我所知,OpenGL使用右手坐标系,至少在剪辑空间中是这样工作的:

  • 右X点
  • Y向上指
  • Z指向屏幕
这意味着,在不修改用于变换的所有矩阵的情况下,世界空间坐标的工作方式如下:

  • X-Z平面是水平的
  • X-Y和Z-Y平面是垂直的

如果我想改变它,使Z轴指向上,该怎么办?我怎么能这样做呢?我曾考虑过将所有矩阵乘以旋转矩阵,旋转矩阵只需将所有坐标移动90度,或者在将数据发送到GPU后,我可以更改向量的Y和Z分量,但这些看起来更像是权宜之计,而不是实际的解决方案,如果对场景中的每个网格执行,它们也可能会影响性能。有什么标准的方法可以做到这一点吗?我搞错了吗?

剪辑和NDC空间是左手轴系统,而不是您定义的每个X、Y、Z轴。 可以有多个轴系统。例如,一些“对象存储”使用左手系统。若你们从OpenGL开始,试着在右手系统中设置所有东西,你们会更容易理解。 您的对象通常在其自己的本地系统中定义(右撇子或非右撇子)。你把它们放在一个“世界”矩阵中。你从摄像机的位置看世界,这需要一个“视图”矩阵。然后你把它们都投射出来,另一个“项目”矩阵。
正如您所看到的,矩阵在任何地方都被使用。不要害怕他们。
从一个轴系到另一个轴系的变化只是另一个矩阵。网络上有很多例子。

你可以在上面乘以旋转矩阵。你试过了吗?同样为了学究气,+Z在右手系统中指向屏幕外。尽管OpenGL在NDC空间是左撇子(这与你的要点相匹配)。@ssell谢谢你的链接,这正是我想要的。