2011-10-14 17 views
6

Ho un file QML che contiene un layout di elementi QML e ora voglio che uno di questi elementi sia QGLWidget. Ad esempio, voglio eseguire il rendering su un oggetto QML specifico.Rendering OpenGL su un elemento QML

Qualcuno sa come fare?

risposta

3

Il modo più semplice è supporre che fornisca a QML un nuovo componente personalizzato implementato in C++. Non ho trovato nulla pronto.

È possibile creare sottoclasse di QDeclarativeItem e implementare il codice OpenGL nella funzione di disegno dopo aver utilizzato la funzione QPainter::beginNative(). Dopodiché puoi "esportare" il tuo nuovo oggetto personalizzato su QML this way. Questo è abbastanza semplice e dovrebbe funzionare, ma si dovrà impostare il viewport di voi QDeclarativeView essere un QGLWidget, qualcosa di simile:

QDeclarativeView view; 
// This is needed because OpenGL viewport doesn't support partial updates. 
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdateMode); 
view.setViewport(new QGLWidget); 

o si dovrà utilizzare il sistema di grafica OpenGL per l'intera applicazione. Un altro modo sta usando QML/3D.

This thread vi darà qualche altra informazione.

+0

Il collegamento ai documenti QML/3D è cambiato, l'ho aggiornato. –