我遇到了glm :: unProject的问题。我试图将我的QGLWidget中的光标位置转换为世界坐标。然而,来自unProject的坐标是他们应该的一半。
我在特定坐标处绘制了一些形状,如果我将鼠标悬停在它们上面,坐标就是它们绘制的一半。
在上面的图片中,左侧多维数据集位于原点,右侧位于(1, 0, 0)
,但是unProject告诉我它位于(.5, 0, 0)
如果我在鼠标当前的位置绘制另一个立方体,它将在鼠标和原点之间渲染。
glm::unProject(glm::vec3(mouse_x, window_height - mouse_y, mouse_z),
glm::lookAt(camera_position, camera_look_at, camera_up),
glm::perspective(fov, window_width / window_height, near, far),
glm::vec4(0, 0, window_width, window_height));
如果我将上述调用的结果加倍,那么我的结果坐标就可以了。但是,我不认为这是正确的解决方案,我怀疑我的参数有问题。