嘿,我在我的游戏的地图编辑器上工作,我正在尝试将鼠标位置转换为游戏世界中的某个位置,该视图是使用 gluPerspective
答案 0 :(得分:7)
一个好的起点是函数gluUnProject
,它接受鼠标坐标并计算对象空间坐标。请查看http://nehe.gamedev.net/data/articles/article.asp?article=13获取基本教程。
更新:
您必须为该文章中的代码启用深度缓冲才能生效。鼠标坐标的Z值是根据此时深度缓冲区中的值确定的。
在初始化代码中,请确保执行以下操作:
glEnable(GL_DEPTH);
答案 1 :(得分:4)
屏幕上的一个点代表3D空间中的整条线(一组无限的点)。
大多数有类似问题的人都在尝试通过点击它来选择一个对象。如果这就是您所追求的,OpenGL提供的选择模式通常比尝试将屏幕坐标转换为真实世界坐标更有效。
使用选择模式(通常)非常简单:从gluPickMatrix
开始,用于指定点击点周围的小方框。然后,您在selection mode中绘制场景。当你完成后,它不会实际绘制任何东西,而是返回你在指定框中绘制的内容的记录。如果内存服务,那些按Z顺序排列,所以列表中的第一个是最前面显示的(即你通常想要的那个)。