【问题标题】:glm::unProject appears to be mixing up the screen Y coordinateglm::unProject 似乎混淆了屏幕 Y 坐标
【发布时间】:2014-07-16 14:27:48
【问题描述】:

我正在尝试将 OpenGL 视口中的鼠标光标位置转换为世界坐标。我正在使用glm::unProject() 来执行此操作。但是,鼠标位置的Y 坐标似乎以某种方式被否定了。

如果我调整相机的方向,使世界的 Y 轴指向上方而 X 指向右侧,则向左/向右移动鼠标会给我正确的坐标,但是向上/向下移动鼠标 Y"我得到的世界”坐标被反转(正Y 向下)。

如果我重新调整相机方向,使 X 现在向上,Y 向左。向左/向右移动鼠标会给出正确的Y 坐标,但向上/向下移动会给出相反的X 坐标。当我定位 Z 时,行为相同。

This 页面提到设备坐标使用 LHS,也许这就是原因?我需要做些什么来处理设备坐标在不同系统中的情况吗?有没有办法确定?


我还注意到我转换后的坐标是它们应该的一半(鼠标在(1,0,0) 的对象上显示(0.5,0,0) 但我认为这是一个单独的问题,所以一旦我解决了这个问题我会问另一个问题.

【问题讨论】:

    标签: opengl projection coordinate-systems glm-math coordinate-transformation


    【解决方案1】:

    基本问题是 OpenGL 将原点定义为窗口的左下角,而大多数窗口系统使用左上角代替。解决方法很简单:窗口高度减去鼠标Y坐标:

    gl_x = mouse_x;
    gl_y = windowHeight - mouse_y;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      相关资源
      最近更新 更多