【问题标题】:Opengl-es Android and TouchEventsOpengl-es Android 和 TouchEvents
【发布时间】:2011-08-18 18:49:26
【问题描述】:

现在,我正在尝试创建一个简单的应用程序,当您在屏幕上移动时,您的手指触摸的地方会出现一个正方形。我想使用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;

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

【问题讨论】:

  • 你能补充一下你的投影(相机)是如何设置的吗?

标签: android opengl-es touch


【解决方案1】:

我不会在那里使用 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)等。

【讨论】:

  • 这是我已经采用的解决方案。我认为它应该是 GLU.gluOrtho2D (gl, 0, WINDOWx, WINDOWy, 0);不过谢谢! :P
  • 是的,GLU.gluOrtho2D (gl, 0, WINDOWx, WINDOWy, 0); 是正确的 :)
猜你喜欢
  • 2011-06-02
  • 2011-04-02
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多