转换屏幕坐标为世界坐标

问题描述:

我得到的屏幕使用这个坐标:转换屏幕坐标为世界坐标

@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

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线。

ModelView,投影和视口输入可以通过查询OpenGL当前矩阵来获得。引用相同的链接(指定函数调用)。

除了x和y屏幕参数外,还需要深度参数或z参数。您可以使用深度范围将方块放置在特定的z平面中。或者给出一个默认值。但要确保它在可见区域内。

一旦您收到对象坐标,请将其视为平方中心并绘制所需长度的平方。

萨蒂什

+0

请更新链接 – Dev 2014-12-30 08:52:34