Opengl-es Android和TouchEvents

时间:2011-08-18 18:49:27

标签: android opengl-es touch

现在,我正在尝试创建一个简单的应用程序,当您沿着屏幕移动手指时,手指接触到的方块。我想用opengl-es做这件事。我对它很新,现在我仍然坚持将触摸事件报告的窗口坐标映射到opengl-es所具有的笛卡尔平面坐标系。现在,为了获得x和y翻译,我正在使用:

final int x = (e.getX()-(getWidth()/2))/(getWidth()/2) * SOME_SCALING_FACTOR;
final int y = ((getHeight()/2)-e.getY())/(getHeight()/2) * SOME_SCALING_FACTOR;

这背后的逻辑是我认为笛卡尔平面以屏幕为中心,所以我试图以这种方式重新映射我的触摸事件坐标。但是,我的结果非常不准确。 我还有另一种方法吗?

1 个答案:

答案 0 :(得分:3)

我不会在那里使用SOME_SCALING_FACTOR。最好为它配置OpenGL。

您可以使用以下代码配置相机,然后进行绘图。

gl.glMatrixMode(gl.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluOrtho2D(gl, 0, WINDOWx, 0, WINDOWy);
gl.glMatrixMode(gl.GL_MODELVIEW);
gl.glLoadIdentity();

屏幕的左下角是原点,左上角是(0,WINDOWy)等。