2

私はQGraphicsView2D画像を表示するために使用していますがQGLWidget、3Dオブジェクトを表示するための別のウィンドウもあります。3D オブジェクトの回転に基づいて、「QGraphicsView」に表示される画像を動的に変更しています。

Maya 2009 のような 2D イメージの上に半透明の 3D オブジェクトをレンダリングしたいと思います (ビューポートの右上隅にある立方体に注目してください): (ソース: boulevard-creation.com )Maya 2009 のスクリーンショット

現在のウィジェットでこれを行うことは可能ですか? そうでない場合、どうすればそれを行うことができますか?

私が考えることができる 1 つのオプションは、すべてをレンダリングしてQGLWidget、2D イメージをテクスチャとして背景平面に表示することですが、それは少し面倒に思えます。

4

2 に答える 2

2

私は方法を見つけましたが、それは非常に遅いです:あなたは単に別QGraphicsItemのものをQGraphicsSceneこのように追加することができます

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

透明度は で設定できますQGraphicsItem::setOpacity()

を使用するより高速な方法があるはずですが、QPixelBufferまだ適切にレンダリングできませんでした。

于 2011-01-06T18:50:11.147 に答える
1

qgraphicsview のビューポートを qglwidget に設定すると、paint メソッドで gl 呼び出しを直接使用して 3d オブジェクトを描画できます。

http://doc.qt.io/archives/qt-4.7/qpainter.html#beginNativePaintingを参照してください。

于 2011-01-07T00:15:24.390 に答える