我正在使用它获取屏幕坐标:
@Override
public boolean onTouchEvent(MotionEvent ev) {
x = ev.getX(0);
y = ev.getY(0);
return true;
}
这些是我的openGL 1.0 square的顶点:
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变量而不是Verticle,我会得到绝对的废话。我的问题是:我应该使用什么公式将屏幕坐标x和y转换为世界坐标,以便我可以使用它们将我的方块定位到触摸点?
编辑:
哎呀,我忘了说,这是2D游戏......
答案 0 :(得分:3)
其实我自己找到了一种方式,而glUunProject并不是Android平台上的最佳方式...... http://magicscrollsofcode.blogspot.com/2010/10/3d-picking-in-android.html
答案 1 :(得分:1)
有一个名为'gluunproject'的功能,可以为你做这个。链接在这里。
http://www.opengl.org/sdk/docs/man/xhtml/gluUnProject.xml
顺便说一下,屏幕坐标对应于从相机中心穿过屏幕坐标(图像平面)的3D线。
可以通过查询OpenGL当前矩阵来获取ModelView,投影和视口输入。请参阅相同的链接(指定函数调用)。
除x和y屏幕参数外,您还需要深度参数或z参数。您可以使用深度范围将方块放置在特定的z平面中。或者给出一个默认值。但要确保它在可见区域内。
收到物体坐标后,将其视为正方形的中心并绘制所需长度的正方形。
萨蒂什南比亚