将鼠标位置转换为世界位置OpenGL

时间:2010-06-21 23:48:53

标签: c opengl winapi mouse graphics

嘿,在我的游戏的地图编辑器上工作,我正在尝试将鼠标位置转换为游戏世界中的某个位置,该视图是使用 gluPerspective

2 个答案:

答案 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顺序排列,所以列表中的第一个是最前面显示的(即你通常想要的那个)。