转换后获取OpenGL 3D Object的屏幕坐标和大小

时间:2013-09-04 07:28:26

标签: opengl 3d processing transformation screen-positioning

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

1 个答案:

答案 0 :(得分:4)

确定鼠标所在的对象称为拣选,有两种主要方法:

  1. 颜色挑选。使用不同的颜色将每个对象绘制到后台缓冲区中(这仅在拾取时完成,彩色对象永远不会显示在屏幕上)。然后使用glReadPixels读取光标下的像素并检查其颜色以确定它是哪个对象。如果鼠标没有在对象上,您将获得背景颜色。更多详情:Lighthouse 3D Picking Tutorial, Color Coding
  2. 射线投射。您将光线通过光标位置投射到场景中,并检查它是否与任何对象相交。更多详情:Mouse picking with ray casting
  3. 从阅读你的描述选项1可能会更简单,并做你需要的。