1

我的屏幕上有一个正方形对象:

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);

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

4

3 回答 3

0

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

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

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

于 2013-01-29T12:02:33.287 回答
0

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

于 2013-01-29T09:33:51.670 回答
0

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

你可以在这里找到更多细节

于 2013-01-29T16:02:07.063 回答