2

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

我想在 2D 图像上渲染一个半透明的 3D 对象,就像 Maya 2009 曾经做的那样(注意视口右上角的立方体):(来源:boulevard-creation.com玛雅 2009 截图

是否可以使用我当前的小部件执行此操作?如果没有,怎么可能做到?

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

4

2 回答 2

2

我找到了一种方法,但它很慢:你可以简单地添加另一个QGraphicsItemQGraphicsScene这样

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

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

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

于 2011-01-06T18:50:11.147 回答
1

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

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

于 2011-01-07T00:15:24.390 回答