2

我在处理草图中有几个 OpenGL 中的 3D 对象,我需要确定鼠标是否悬停在这些对象上。由于不断变换,我无法将原始坐标和大小与鼠标位置进行比较。我已经找到了 screenX() 和 screenY() 方法,它们在转换和翻译后返回翻译后的屏幕坐标,但我仍然需要在旋转后获取显示的大小。

4

1 回答 1

4

确定鼠标在哪个对象上方称为拾取,主要有两种方法:

  1. 颜色挑选。使用不同的颜色将每个对象绘制到后台缓冲区中(这仅在拾取时完成,彩色对象永远不会显示在屏幕上)。然后使用 glReadPixels 读取光标下的像素并检查其颜色以确定它是哪个对象。如果鼠标不在对象上,您将获得背景颜色。更多详细信息:Lighthouse 3D Picking Tutorial,颜色编码
  2. 射线铸造。您将通过光标位置的光线投射到场景中并检查它是否与任何对象相交。更多详细信息:使用光线投射的鼠标拾取

从阅读您的描述选项 1 可能会更简单,并做你需要的。

于 2013-09-04T08:17:39.420 回答