如何知道鼠标是否在物体上移动

时间:2013-01-29 09:10:54

标签: visual-c++ opengl

我的屏幕上有一个方形物体:

glVertex3d(-0.1, -0.1, -0.1);
glVertex3d(0.1, -0.1, -0.1);
glVertex3d(0.1, 0.1, -0.1);
glVertex3d(-0.1, 0.1, -0.1);

现在我想知道鼠标是否在此对象上移动。

3 个答案:

答案 0 :(得分:0)

如果它只是一个普通的正方形,那么最好将4个顶点手动转换为屏幕空间(通过将它们与模型 - 视图 - 投影 - 矩阵相乘),然后将鼠标坐标转换为-1到1的范围,最后检查您的鼠标是否在您描述的多边形内。 另请参阅gluProject,以帮助您将点从3D空间转换为屏幕空间。

答案 1 :(得分:0)

首先要提到的是,你应该知道你将在什么空间进行计算。鼠标指针具有根据屏幕或窗口空间的位置,您的对象(在此示例中为方框)具有模型空间坐标。

您必须选择一个空格并将所有坐标转换为选定的空间。

以下是一篇描述一些问题的博文:http://bartlomiejfilipek.blogspot.com/2012/06/select-mouse-opengl.html

答案 2 :(得分:0)

我认为gluPickMatrix正是您所寻找的。

您可以找到更多详情here