转换屏幕坐标为世界坐标
我得到的屏幕使用这个坐标:转换屏幕坐标为世界坐标
@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游戏...
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平面中。或者给出一个默认值。但要确保它在可见区域内。
一旦您收到对象坐标,请将其视为平方中心并绘制所需长度的平方。
萨蒂什
请更新链接 – Dev 2014-12-30 08:52:34
我不知道OpenGL的,但你有没有考虑使用'getRawX( )'(返回绝对坐标)而不是'getX()'? – 2012-02-17 11:15:13