2012-02-17 251 views
2

我得到的屏幕使用這個座標:轉換屏幕座標爲世界座標

@Override 
public boolean onTouchEvent(MotionEvent ev) { 
x = ev.getX(0); 
y = ev.getY(0); 
return true; 
} 

而這些都是我的openGL 1.0平方米的verticles:

private float vertices[] = { 
     -1.0f, -1.0f, 0.0f,  // V1 - bottom left 
     -1.0f, 1.0f, 0.0f,  // V2 - top left 
     1.0f, -1.0f, 0.0f,  // V3 - bottom right 
     1.0f, 1.0f, 0.0f   // V4 - top right 
}; 

大家誰已經用OpenGL知道工作,如果我會粘貼x和y變量而不是垂直,我會得到絕對的廢話。我的問題是:我應該使用什麼公式將屏幕座標x和y轉換爲世界座標,以便我可以使用它們將我的方塊定位到觸摸點?

編輯:

哎呀,我忘了說,這是一個2D遊戲...

+0

我不知道OpenGL的,但你有沒有考慮使用'getRawX( )'(返回絕對座標)而不是'getX()'? – 2012-02-17 11:15:13

回答

1

有一個名爲「gluunproject」功能,可以爲你做到這一點。鏈接在這裏。

http://www.opengl.org/sdk/docs/man/xhtml/gluUnProject.xml

順便提一句,在屏幕座標將對應於從照相機的中心穿過的屏幕座標(像面)3D線。

ModelView,投影和視口輸入可以通過查詢OpenGL當前矩陣來獲得。引用相同的鏈接(指定函數調用)。

除了x和y屏幕參數外,還需要深度參數或z參數。您可以使用深度範圍將方塊放置在特定的z平面中。或者給出一個默認值。但要確保它在可見區域內。

一旦您收到對象座標,請將其視爲平方中心並繪製所需長度的平方。

薩蒂什

+0

請更新鏈接 – Dev 2014-12-30 08:52:34

相關問題