1

我画了一个正方形,现在我想沿着鼠标指针沿着平面移动它。我使用的是 open 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);

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

如何随鼠标移动对象?

4

1 回答 1

0

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

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

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

于 2012-02-24T11:29:08.163 回答