我画了一个正方形,现在我想沿着鼠标指针移动它。我正在使用开放的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);
但是对于鼠标指针的一点移动。对象位置有很大的位移。
如何将对象与鼠标一起移动?
答案 0 :(得分:0)
指针坐标通常是屏幕物理尺寸,即像素。您的OpenGL坐标取决于您应用的投影和模型视图矩阵。
您必须做的是在您的对象或世界空间中执行屏幕/视口坐标的反转换。这是通过反转转换管道来完成的。由于矩阵乘法是一个线性运算,你不仅可以通过它来设置绝对值,它也适用于差分。
我会告诉你更多信息,但我需要说明你现有的程序结构,为你提供如何扩展或改变它的明智建议。请将其发布在http://pastebin.com或类似内容上。