【发布时间】:2021-04-07 17:08:52
【问题描述】:
我正在用 C++ 制作一个绘图程序,但不知道如何从屏幕空间转换到世界空间
我可以访问投影和视图矩阵以及屏幕尺寸等
这是我正在使用的代码,但它不起作用
没有错误,但它根本不输出世界空间坐标,它只是稍微改变了所有像素坐标
我正在关注我在这里找到的答案OpenGL Math - Projecting Screen space to World space coords
我现在只使用正交相机
glm::mat4 proj = cameraComp.Camera.GetProjection();
glm::mat4 view = glm::translate(glm::mat4(1.0f), transformComp.Position)
* glm::rotate(glm::mat4(1.0f), glm::radians(transformComp.Rotation.z), glm::vec3(0, 0, 1));
glm::mat4 inversed = glm::inverse(proj * view);
glm::vec4 worldPos = { newMousePos, 0, 1 };
worldPos *= inversed;
【问题讨论】: