现在,我正在尝试创建一个简单的应用程序,当你在屏幕上移动它时,一个方块会跟随你的手指触摸的地方。我想使用opengl-es来做这件事。我对它还很陌生,现在我只能将touch事件报告的窗口坐标映射到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;这背后的逻辑是,我认为笛卡尔平面是以屏幕为中心的,所以我试图以这种方式重新映射我的触摸事件坐标。然而,我的结果非常不准确。有没有其他我应该这样做的方式?
发布于 2011-08-22 19:42:17
我不会在那里使用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),依此类推。
https://stackoverflow.com/questions/7112529
复制相似问题