gpt4 book ai didi

c++ - Qt OpenGL-如何根据鼠标点击获取对象

转载 作者:可可西里 更新时间:2023-11-01 13:28:11 26 4
gpt4 key购买 nike

我正在尝试在 Qt-openGL 中创建一个应用程序。在这里,我必须根据鼠标点击知道被点击的对象。我的想法是存储点(对象在 QWidget 中的区域),并将鼠标点击与这些点相匹配。任何人都可以说出如何做到这一点吗?或者任何人都可以展示任何其他方式吗?

最佳答案

这个问题通常被称为“挑选”。 OpenGL 本身只是绘制东西,没有几何对象管理可言(OpenGL 有对象,但它们就是您通常所说的资源)。

目前实现 OpenGL 拾取的常用方法是在点击位置检索深度值 (glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth)) 并将其取消投影到世界空间 (gluUnProject(...))。这将为您提供点击点的 (x,y,z)

由于您通常会通过将 segmentation 结构遍历到点击坐标来管理某些空间 segmentation 结构(BSP、Kd 等)中的几何图形,因此您可以通过这种方式检索对象。

另一种方法是将点击后的光线转换到场景中,并进行光线/包围体相交测试。

我强烈反对使用旧的 OpenGL 选择机制:使用起来既慢又麻烦。

关于c++ - Qt OpenGL-如何根据鼠标点击获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6397379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com