微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Qt OpenGL-如何基于鼠标单击获得对象

如何解决Qt OpenGL-如何基于鼠标单击获得对象

|| 我正在尝试在Qt-openGL中创建一个应用程序。在这里,我必须基于鼠标单击来了解单击的对象。我的想法是存储点(在QWidget中对象的区域),然后将鼠标单击与这些点匹配。有人可以说该怎么做吗?或者有人可以以其他方式表现出来吗?     

解决方法

        此问题通常称为“拣选”。 OpenGL本身只是画图,没有几何对象管理可言(OpenGL有对象,但是它们是您通常所说的资源)。 目前,实现OpenGL拾取的通常方法是在点击位置(
glReadPixels(x,y,1,GL_DEPTH_COMPONENT,GL_FLOAT,&depth)
)处获取深度值,然后将其解投影到世界空间(
gluUnProject(...)
)中。这使您获得点击点的
(x,z)
。 由于通常会通过将细分结构遍历到单击坐标来管理某些空间细分结构(BSP,Kd等)中的几何,因此可以通过这种方式检索对象。 另一种方法是将光线跟随单击投射到场景中,并进行光线/边界体积相交测试。 我强烈不鼓励使用旧的OpenGL选择机制:使用起来缓慢且麻烦。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。