2012-02-24 96 views
1

我画了一个正方形,现在我想沿着鼠标指针沿着飞机移动它。我正在使用open GL es 1.0.I试图在下面的代码中获得运动位置的差异:随着鼠标移动一个对象

@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); 

但是对于鼠标指针中的一点点移动,物体位置有很大的位移。

如何随鼠标移动物体?

+0

你是否让你手指在屏幕上的其他地方? – SteveL 2012-02-24 11:00:00

回答

0

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

你必须做的是将屏幕/视口坐标回退到对象或世界空间。这是通过反转转换管道完成的。由于矩阵乘法是一种线性运算,因此不仅可以通过它来输入绝对值,还可以用于差分运算。

我会告诉你更多,但我需要说你现有的程序结构给你明智的建议如何扩展或改变它。请张贴在http://pastebin.com或类似的。

+0

您可以使用gluUnproject函数将屏幕坐标转换为对象坐标 – 2012-02-24 11:47:11

+0

@SatishKumar:是的,我知道这一点。我不想告诉OP,因为我有预感,OP可能会滥用矩阵堆栈。首先,我想查看代码,以便能够在将gluUnproject引入它之前对其进行更正。 – datenwolf 2012-02-24 11:48:43

+0

我相信你这样做。我认为,如果他研究具体功能,他可能很容易学会自己。 :) – 2012-02-24 12:34:03