随鼠标移动对象

时间:2012-02-24 10:50:48

标签: android opengl-es opengl-es-1.1

我画了一个正方形,现在我想沿着鼠标指针移动它。我正在使用开放的GL es 1.0。我试图通过以下代码获得运动位置的差异:

@Override public boolean onTouchEvent(MotionEvent e) {
    float x = e.getX();
    float y = e.getY();
    switch (e.getAction()) {
    case MotionEvent.ACTION_MOVE:
         mRenderer.dx = x - mPreviousX;
         mRenderer.dy = y - mPreviousY;
        requestRender();
    }
    mPreviousX = x;
    mPreviousY = y;
    return true;
}

然后我通过使用带有dx和dy值的gtranslatef函数来翻译对象。

gl.glTranslatef(dx, dy,0);

但是对于鼠标指针的一点移动。对象位置有很大的位移。

如何将对象与鼠标一起移动?

1 个答案:

答案 0 :(得分:0)

指针坐标通常是屏幕物理尺寸,即像素。您的OpenGL坐标取决于您应用的投影和模型视图矩阵。

您必须做的是在您的对象或世界空间中执行屏幕/视口坐标的反转换。这是通过反转转换管道来完成的。由于矩阵乘法是一个线性运算,你不仅可以通过它来设置绝对值,它也适用于差分。

我会告诉你更多信息,但我需要说明你现有的程序结构,为你提供如何扩展或改变它的明智建议。请将其发布在http://pastebin.com或类似内容上。