1

我正在使用新的 QOpenGLWidget 类在 Qt 中做一个 opengl 项目。我只是想在单击时获取鼠标的 opengl 世界坐标。我找到了很多方法来做到这一点,但有些已经过时了,而另一些则不起作用。然后我找到了 QVector3D::unproject() 函数,但我没有得到正确的坐标。到目前为止,这是我的代码的一部分:

QMatrix4x4 modelView;
modelView.setToIdentity();
modelView.lookAt(m_camera.getPosition(), m_camera.getTarget(), m_camera.getUp());

QMatrix4x4 projection;
projection.perspective(70.0, width() / height(), 0.1, 120.0);

GLint view[4];
glGetIntegerv(GL_VIEWPORT, &view[0]);

QVector3D worldPosition = QVector3D(event->pos().x(), event->pos().y(), 0).unproject(modelView, projection, QRect(view[0], view[1], view[2], view[3]));
qDebug() << worldPosition;

你知道为什么我得到 (1.96532, -3.93444, 4.93216) 我应该有 (-0.5, -0.5, 0.0) 的地方吗?

4

0 回答 0