用鼠标移动对象



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

但对于鼠标指针的微小移动,对象位置会有很大的位移。

如何用鼠标移动对象?

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

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

我想告诉你更多,但我需要说一下你现有的项目结构,以便给你合理的建议,如何扩展或更改它http://pastebin.com或类似的。

相关内容

  • 没有找到相关文章

最新更新