2012-01-24 220 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函數的優秀替代品。

我希望這有助於回答你的問題。祝你好運。

相關問題