OpenGL:坐标系混乱的终极解决方案?

Posted

技术标签:

【中文标题】OpenGL:坐标系混乱的终极解决方案?【英文标题】:OpenGL: the ultimate coordinate system confusion solution? 【发布时间】:2010-01-18 13:12:48 【问题描述】:

我已经厌倦了思考我的协调员在每种情况下的工作情况。

听说用这段代码可以翻转Y轴:

glScalef(1, -1, 1);

但是我应该吗?这不会破坏其他一些外部功能和照明等吗?

【问题讨论】:

【参考方案1】:

我可能会说,习惯 opengl 默认设置是摆脱困惑的最快方法。

【讨论】:

【参考方案2】:

这个问题没有正确的是/否答案。调用glScalef(1, -1, 1) 意味着使用左手坐标系而不是右手坐标系,这在历史上一直是例如 Direct3D 和 RenderMan 界面的选择。有些人觉得让正 z 轴指向屏幕而不是指向屏幕更直观(这是左手坐标系的一种版本,y 轴指向下方是另一种版本)。

如果您选择切换坐标系,则必须更改 OpenGL 中的一些标准设置才能使其正常工作。例如,您可能想调用glCullFace(GL_FRONT)(或颠倒发送到 OpenGL 的所有三角形的顺序)。

【讨论】:

【参考方案3】:

我可能是错的,但它可能会使您的模型从里到外。您可能还需要交换顶点缠绕顺序。不过,如果您使用双面多边形,则无需担心。

【讨论】:

以上是关于OpenGL:坐标系混乱的终极解决方案?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用openGL画点?(c++)

使用 GLM 功能放大 OpenGL 中的当前鼠标位置

gluUnProject 尝试将鼠标坐标转换为 opengl 坐标的奇怪行为

Android 通过Java代码动态获取控件位置的终极解决之道

OpenGL |在 UV 坐标处渲染顶点

放大鼠标的算法(OpenGL)