Я пытаюсь перемещать объекты с помощью мыши с использованием метода Gluunproject с openGL 2.1, но я действительно борется здесь; вот код я написал:GlunUnproject движущийся объект с помощью мыши
int viewport[4];
double modelview[16],
projection[16],
X1, Y1, Z1;
double realY;
GLfloat depth[2];
for(_compt=_OjebctScene.begin();_compt!=_OjebctScene.end();_compt++)
{
if ((*_compt)->IsSelected())
{
GLdouble mouseX=event.x;
GLdouble mouseY=event.y;
glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
realY = viewport[3] - (GLint) mouseY - 1;
glReadPixels(mouseX, realY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, depth);
gluUnProject(mouseX, realY, 0, modelview, projection, viewport, &X1, &Y1, &Z1);
(*_compt)->setX(X1);
(*_compt)->setY(Y1);
(*_compt)->setZ(Z1);
}
}
Я использую цикл, чтобы проверить все объекты на сцене (я отодвинул их в вектор), а затем, когда я найти выбранный объект, я стараюсь, чтобы переместить его с помощью мышь.
Затем я устанавливаю координаты своего объекта в положение мыши в трехмерном пространстве (X1, Y1, Z1); но это не работает.
Что означает «не работает»? – derhass
объекты не двигаются так, как ожидалось, они «прыгают» справа налево, не выполняя при этом движение мыши. – HdjoWattever
Ну. Много чего непонятно. Какая модельная матрица действительно установлена в то время, когда вы это называете? Как преобразование позиции, заданное с помощью этих методов setX() и т. Д. Во время рендеринга? Почему вы читаете значение буфера глубины в позиции mouese? Почему вы не создаете точку на ближайшем самолете? – derhass