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