不用gluUnProject就能将鼠标移至世界位置吗?

时间:2019-01-29 21:41:06

标签: c++ opengl glm-math

我正在尝试实现一个编辑器,例如将mod与opengl一起放置。 当您单击屏幕上的某个位置时,一个对象将被放置在该位置。

到目前为止,这是我的代码

void RayCastMouse(double posx, double posy)
{
    glm::fvec2 NDCCoords = glm::fvec2( (2.0*posx)/ float(SCR_WIDTH)-1.f, ((-2.0*posy) / float(SCR_HEIGHT)+1.f) );
    glm::mat4 viewProjectionInverse = glm::inverse(projection * camera.GetViewMatrix());
    glm::vec4 worldSpacePosition(NDCCoords.x, NDCCoords.y, 0.0f, 1.0f);
    glm::vec4 worldRay = viewProjectionInverse*worldSpacePosition;
    printf("X=%f / y=%f / z=%f\n", worldRay.x, worldRay.y, worldRay.z);
    m_Boxes.emplace_back(worldRay.x, 0, worldRay.z);
}

问题在于对象没有放置在正确的位置,worldRay vec3用于转换模型矩阵。

任何人都可以帮忙吗,我将非常感激。 通过对worldRay.w的worldRay xyz组件进行划分,可以将对象设置在相机位置。

0 个答案:

没有答案