QT开发中文网

QMatrix4x4 map 函数功能,Qt 如何根据 Widget 局部坐标,获取 opengl 内部坐标,使用C++ 给出示例

QMatrix4x4 map 函数可以将一组坐标从一个坐标系映射到另一个坐标系。在 Qt 中,我们可以使用它将 Widget 局部坐标映射到 OpenGL 内部坐标。

示例代码如下:

// 假设 widget 是一个 QWidget 对象,openglWidget 是一个继承自 QOpenGLWidget 的 OpenGL 视图

// 获取 widget 上的鼠标位置
QPoint pos = widget->mapFromGlobal(QCursor::pos());

// 将 widget 的局部坐标映射到 openglWidget 上
QVector4D result = openglWidget->projectionMatrix() * openglWidget->viewMatrix() *
                   openglWidget->modelMatrix() * QVector4D(pos.x(), pos.y(), 0.0f, 1.0f);

// 获得 opengl 内部坐标
QVector3D openglPos(result.x() / result.w(), result.y() / result.w(), result.z() / result.w());

在这个示例中,我们首先获取了鼠标在 widget 上的位置,并将其转换为局部坐标。然后,我们使用 openglWidget 的 projectionMatrix、viewMatrix 和 modelMatrix 将局部坐标映射到 opengl 内部坐标。最后,我们将结果保存为 QVector3D 类型的 openglPos。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1066

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?