2011-01-06 17 views
2

Ich verwende QGraphicsView, um ein 2D-Bild zu zeigen, und habe auch ein separates QGLWidget-Fenster, um einige 3D-Objekte anzuzeigen. Ich verändere dynamisch das in `QGraphicsView 'angezeigte Bild basierend auf der Drehung des 3D-Objekts.Transparentes QGLWidget über QGraphicsView

Ich mag ein halbtransparente 3D-Objekt auf dem 2D-Bild machen, so etwas wie Maya 2009 verwendet zu tun (in der rechten oberen Ecke des Ansichtsfensters den Würfel bemerken): Maya 2009 screenshot http://www.boulevard-creation.com/images/2008/11/maya2009png.png

Ist es möglich, dies mit meinen aktuellen Widgets zu tun? Wenn nicht, wie könnte es getan werden?

Eine Möglichkeit, die ich mir vorstellen kann, wäre, alles in QGLWidget zu rendern und das 2D-Bild als Textur auf einer Hintergrundebene anzuzeigen, aber das scheint ein wenig schmerzhaft.

Antwort

2

Ich habe einen Weg gefunden, aber es ist ziemlich langsam: Sie einfach eine andere QGraphicsItem zum QGraphicsScene wie diese können

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

Transparenz hinzufügen können als mit QGraphicsItem::setOpacity() eingestellt werden.

Es sollte einen schnelleren Weg mit QPixelBuffer geben, aber ich schaffte es noch nicht richtig zu rendern.

+0

Diese Methode richtig entkräftet Ihren ganzen Bildschirm langweilig es neu gerendert werden. Deshalb könnte es für dich langsam sein –