QGraphicsView 之上的透明 QGLWidget

发布于 2024-10-10 20:01:11 字数 548 浏览 12 评论 0原文

我使用 QGraphicsView 来显示 2D 图像,并且还有一个单独的 QGLWidget 窗口来显示一些 3D 对象。我根据 3D 对象的旋转动态更改“QGraphicsView”中显示的图像。

我想在 2D 图像之上渲染一个半透明的 3D 对象,就像 Maya 2009 过去所做的那样(注意视口右上角的立方体): sstatic.net/wdhJA.png" rel="nofollow noreferrer">Maya 2009 屏幕截图
(来源:boulevard-creation.com

是否可以使用我当前的小部件来执行此操作?如果没有的话,怎么办呢?

我能想到的一个选择是在 QGLWidget 中渲染所有内容,并将 2D 图像显示为背景平面上的纹理,但这似乎有点痛苦。

I'm using QGraphicsView to show a 2D image and also have a separate QGLWidget window to display some 3D object. I'm dynamically changing the image displayed in `QGraphicsView' based on the rotation of the 3D object.

I would like to render a semi-transparent 3D object on top of the 2D image, something like Maya 2009 used to do (notice the cube in the upper right corner of the viewport): Maya 2009 screenshot
(source: boulevard-creation.com)

Is it possible to do this with my current widgets? If not, how could it be done?

One option I can think of would be to render everything in QGLWidget and display the 2D image as a texture on a background plane, but that seems slightly painful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

许一世地老天荒 2024-10-17 20:01:11

我找到了一种方法,但速度很慢:您可以像这样简单地将另一个 QGraphicsItem 添加到 QGraphicsScene

scene->addPixmap(glWidget->renderPixmap());

可以使用 QGraphicsItem::setOpacity() 设置透明度。

应该有一种使用 QPixelBuffer 更快的方法,但我还没有设法正确渲染它。

I have found a way, but it is quite slow: you can simply add another QGraphicsItem to the QGraphicsScene like this

scene->addPixmap(glWidget->renderPixmap());

Transparency can than be set with QGraphicsItem::setOpacity().

There should be a faster way using QPixelBuffer, but I didn't manage to render to it properly yet.

暮倦 2024-10-17 20:01:11

将 qgraphicsview 的视口设置为 qglwidget,然后在您的 Paint 方法中您可以直接使用 gl 调用来绘制 3D 对象。

请参阅http://doc.qt.io/archives/qt-4.7/ qpainter.html#beginNativePainting

Set the viewport of your qgraphicsview to the qglwidget, then in your paint method you can directly use gl calls to draw your 3d objects.

See http://doc.qt.io/archives/qt-4.7/qpainter.html#beginNativePainting

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文