Qt QGraphicsView上的透明QGLWidget

Qt QGraphicsView上的透明QGLWidget,qt,qt4,qgraphicsview,qglwidget,Qt,Qt4,Qgraphicsview,Qglwidget,我正在使用QGraphicsView来显示2D图像,并且还有一个单独的QGLWidget窗口来显示一些3D对象。我正在根据3D对象的旋转动态更改“QGraphicsView”中显示的图像 我想在2D图像的顶部渲染一个半透明的3D对象,类似于Maya 2009(请注意视口右上角的立方体): (来源:) 可以用我当前的小部件来实现这一点吗?如果没有,怎么做 我能想到的一个选择是在QGLWidget中渲染所有内容,并将2D图像显示为背景平面上的纹理,但这似乎有点痛苦。我找到了一种方法,但速度相当慢:您

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

我想在2D图像的顶部渲染一个半透明的3D对象,类似于Maya 2009(请注意视口右上角的立方体):
(来源:)

可以用我当前的小部件来实现这一点吗?如果没有,怎么做


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

我找到了一种方法,但速度相当慢:您可以简单地向
qgraphicscene
添加另一个
qgraphicscenscene
scene->addPixmap(glWidget->renderPixmap())

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


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

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


请参见

此方法正确地使整个屏幕无效,从而使其无法重新渲染。这就是为什么它对你来说可能很慢