2012-01-24 223 views
2

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

回答

0

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

给定2D屏幕坐标和现有的视图和投影矩阵,除了对深度缓冲区进行采样(假设您有深度缓冲区),没有办法确定正确的z坐标。

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

以下可能是除了点,你正在使用Java,但我要提也无妨:如果你考虑用C++我建议你签出GLM库:http://glm.g-truc.net/

它提供替代过时glu函数,如glm :: project和glm :: unproject。 它是opengl矩阵堆栈和glu函数的优秀替代品。

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

相关问题