Pregunta

Estoy usando QGraphicsView para mostrar una imagen de 2D y también tienen una ventana separada QGLWidget para mostrar un objeto 3D. Estoy cambiando dinámicamente la imagen que aparece en `QGraphicsView' basado en la rotación del objeto 3D.

Me gustaría hacer que un objeto 3D semitransparente en la parte superior de la imagen en 2D, algo así como Maya 2009 solía hacer (nótese el cubo en la esquina superior derecha de la ventana): Maya 2009 pantalla
(fuente: boulevard-creation.com )

¿Es posible hacer esto con mis reproductores actuales? Si no, ¿cómo se podría hacer?

Una de las opciones que se me ocurre sería la de hacer todo en QGLWidget y mostrar la imagen en 2D como una textura de fondo en un avión, pero que parece un poco doloroso.

¿Fue útil?

Solución

Me han encontrado una manera, pero es bastante lento: sólo tiene que añadir otro QGraphicsItem a la QGraphicsScene como esto
    scene->addPixmap(glWidget->renderPixmap());

La transparencia puede que ajustarse con QGraphicsItem::setOpacity().

No debe haber una manera más rápida usando QPixelBuffer, pero no logró hacer con ella adecuadamente todavía.

Otros consejos

Configurar la vista de su QGraphicsView a la qglwidget, a continuación, en el método de pintura que se puede utilizar directamente las llamadas gl para dibujar los objetos 3D.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top