я нарисовал квадрат, теперь я хочу переместить его по плоскости, следуя указателю мыши. Я использую 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;
}
а затем я переводю объект, используя функцию gtranslatef с значениями dx и dy.
gl.glTranslatef(dx, dy,0);
но для небольшого перемещения в указателе мыши. Большое смещение в позиции объекта.
Как я могу перемещать объект вместе с мышью?
Координаты указателя обычно находятся в физических размерах экрана, то есть в пикселях. Ваши координаты OpenGL зависят от матриц проекции и модельного вида, которые вы применяете.
То, что вы должны сделать, это сделать обратную трансформацию координат экрана/видового экрана в ваш объект или пространство мира. Это делается путем преобразования конвейера трансформации. Поскольку матричное умножение является линейной операцией, вы можете не только вводить через нее абсолютные значения, но и для дифференциалов.
Я бы сказал вам больше, но мне нужно сказать, что ваша существующая структура программы дает вам разумные советы о том, как продлить или изменить ее. Пожалуйста, разместите его на http://pastebin.com или аналогичном.