Qt OpenGL-如何获得基于鼠标点击的对象
Qt OpenGL- How to get the object based on the mouse click
我正在尝试在Qt-openGL中制作一个应用程序。在这里,我必须知道点击的对象,基于鼠标点击。我的想法是存储点(QWidget中对象的区域),并将鼠标点击与这些点相匹配。有人能说怎么做吗?,或者任何身体都能以其他方式显示吗?
这个问题通常被称为"拾取"。OpenGL本身只是画东西,没有几何对象管理可言(OpenGL有对象,但它们是你通常称之为资源的东西)。
目前实现OpenGL拾取的常用方法是检索单击位置(glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth)
)处的深度值,并将其取消投影到世界空间(gluUnProject(...)
)中。这将为您提供单击点的(x,y,z)
。
由于您通常会通过将细分结构遍历到单击坐标来管理某些空间细分结构(BSP、Kd等)中的几何体,因此可以通过这种方式检索对象。
另一种方法是将单击后的光线投影到场景中,并进行光线/边界体积相交测试。
我强烈反对使用旧的OpenGL选择机制:它使用起来既慢又麻烦。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 如何使用鼠标单击选择多个 QLabel 对象?
- 鼠标单击 OpenGL 时无法围绕其自己的中心旋转对象
- WXWIDGETS将鼠标事件连接到WXPAINTDC上的形状对象以删除
- 如何处理鼠标徘徊在对象[Allegro5/c ]
- 在Qt5的OpenGL绘图中通过鼠标移动计算对象旋转角度
- 基于鼠标选择Opengl拖动对象
- 鼠标拖动OpenGL/GLUT中的对象
- 如何防止成员 QWidgets 或 QDialog 对象在鼠标单击对话框后从 QMainWindow 接管关键事件
- 使用鼠标手动提取对象
- 错误 CS0120:访问非静态成员"相机操作员.反转鼠标Y(浮点)"需要对象引用
- 使对象跟随鼠标
- 如何将光标(鼠标指针对象)转换为bmp图像的自动序列
- C++OpenGL用鼠标拖动多个对象
- 如何在opencv中使用对象跟踪的概念移动鼠标
- 如何在c++ opengl中使用鼠标滚动对象
- 如何在OpenGL中检测鼠标悬停在某个对象上
- Qt OpenGL-如何获得基于鼠标点击的对象
- 使一个对象可点击(如果鼠标在对象区域内,点击)