[英]Converting screen coordinates to world coordinates
我正在使用此獲取屏幕坐標:
@Override
public boolean onTouchEvent(MotionEvent ev) {
x = ev.getX(0);
y = ev.getY(0);
return true;
}
這些是我的openGL 1.0正方形的頂點:
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游戲...
Actualy我找到了自己的方式,而glUnProject不是Android平台的最佳途徑...... http://magicscrollsofcode.blogspot.com/2010/10/3d-picking-in-android.html
有一個名為“ gluunproject”的函數可以為您完成此任務。 鏈接在這里。
http://www.opengl.org/sdk/docs/man/xhtml/gluUnProject.xml
順便說一下,屏幕坐標將對應於一條3D線,該線從攝像機中心經過屏幕坐標(圖像平面)。
可以通過查詢OpenGL當前矩陣來獲取ModelView,投影和視口輸入。 引用相同的鏈接(指定了函數調用)。
除了x和y屏幕參數外,您還需要depth參數或z參數。 您可以使用深度范圍將正方形放置在特定的z平面中。 或提供默認值。 但是請確保它在可見區域內。
收到對象坐標后,將其視為正方形的中心並繪制所需長度的正方形。
薩蒂什
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.