【问题标题】:android opengl es 2.0 converting screen coordinates to world coordinateandroid opengl es 2.0 将屏幕坐标转换为世界坐标
【发布时间】:2012-01-24 18:44:22
【问题描述】:

我是 opengl 的新手,想弄清楚如何将 x、y 屏幕坐标转换为其各自的 opengl 世界坐标。到目前为止,我发现的所有示例都使用 GLU.gluUnProject() 在两个坐标系之间进行转换,但是,我不确定此方法在 opengl es 2.0 中是否可用,如果可以,我不确定如何检索投影和模型视图矩阵。使用 gluUnProject 的其他示例通过使用特定于 opengl es 1.X 的 MatrixGrabber 类来访问矩阵。我还发现了使用顶点着色器在坐标系之间进行转换的 iphone 示例,但是,我也无法使用这种技术。似乎有一种简单的方法可以将 2D 屏幕坐标转换为 2D 世界坐标。任何帮助将非常感激。谢谢。

【问题讨论】:

    标签: android opengl-es-2.0


    【解决方案1】:

    您的假设不正确,没有简单的方法可以将屏幕坐标转换为世界坐标。

    鉴于 2d 屏幕坐标和现有视图和投影矩阵,除了对深度缓冲区进行采样(假设您有深度缓冲区)之外,无法确定正确的 z 坐标。

    将 2d 点投影到视锥中只会给您一条射线(或从投影在近剪裁平面上的点到投影在远剪裁平面上的点的线段)。

    在您使用 java 时,以下内容可能不是重点,但我还是要提一下:如果您考虑使用 c++,我建议您查看 glm 库:http://glm.g-truc.net/

    它为已弃用的 glu 函数提供替代品,例如 glm::project 和 glm::unproject。 它是 opengl 矩阵堆栈和 glu 函数的绝佳替代品。

    我希望这有助于回答您的问题。祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 2017-12-11
      相关资源
      最近更新 更多