我正在尝试实现一个编辑器,例如将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组件进行划分,可以将对象设置在相机位置。