嘿,我正在为我的游戏制作地图编辑器,并尝试将鼠标位置转换为游戏世界中的位置,视图使用 gluPerspective 进行设置。
gluUnProject
,它可以获取鼠标坐标并计算物体空间坐标。可以参考http://nehe.gamedev.net/data/articles/article.asp?article=13中的基础教程。glEnable(GL_DEPTH);
屏幕上的一个点代表了3D空间中的整条线(无限多个点)。
大多数和您类似的问题都是想要通过点击选择一个对象。如果是这样,OpenGL提供了一种选择模式,通常比尝试将屏幕坐标转换为真实世界坐标更有效。
使用选择模式(通常)很简单:您可以从gluPickMatrix
开始,用它来指定点击点周围的一个小框。然后在选择模式下绘制场景。完成后,它不会实际绘制任何内容,而是返回在您指定的框中将要绘制的记录。如果我没记错的话,这些记录是按Z顺序排列的,因此列表中的第一个记录是最前面显示的(即通常想要的那个记录)。