我目前正在研究C++游戏引擎,我想在应用程序中构建鼠标交互.我以前通过射线拾取完成了这个,但是当时我使用了固定的鼠标位置,现在我想不用它.我读到你可以使用glm :: unProject函数来做到这一点,但我的工作不起作用.coördinates这个功能给出了不对.我究竟做错了什么?
rscore_projection_matrix = glm::perspective(45.0f, (float)(windowWidth)/(float)(windowHeight), 0.1f, 1000.0f);
rscore_view_matrix = glm::lookAt(glm::vec3(lengthdir_x(16, rscam_direction)+rscam_x, rscam_z, lengthdir_y(16, rscam_direction)+rscam_y), glm::vec3(rscam_x, 0, rscam_y), glm::vec3(0,1,0));
rscore_model_matrix = glm::mat4(1.0f);
glm::vec3 screenPos = glm::vec3(rscore_mouse_x, rscore_mouse_y, 0.1f);
glm::vec4 viewport = glm::vec4(0.0f, 0.0f, windowWidth, windowHeight);
glm::vec3 worldPos = glm::unProject(screenPos, rscore_model_matrix, rscore_projection_matrix, viewport);
Run Code Online (Sandbox Code Playgroud)
我使用vec3 worldPos位置来绘制对象.