Domanda
Quali sono esattamente le mie opzioni? Ho dei programmi che devo scrivere in OpenGL e DirectX e mi piacerebbe usare Qt per OpenGL e non è necessario implementare di nuovo metà del mio programma per i componenti DirectX della mia attività.
Ho cercato su Google e ho trovato riferimenti a persone che si lamentano del fatto che Direct3D è un dipendenza di Qt e persone che parlano dell'implementazione della sottoclasse QWidget di QD3DWidget in modo simile a QGLWidget, ma nessuno ha parlato di come implementarlo o di dove siano gli esempi.
Ho bisogno di aiuto. Voglio sapere se è possibile? Cosa dovrei fare per farlo funzionare? È già stato fatto prima?
Soluzione
è piuttosto semplice di quanto pensassi,
-> Create a QWidget
-> Override paintEngine() method, does nothing, just returns NULL
-> Assign HWND to widget->winId()
#ifdef USE_QTGUI
QApplication a(argc, argv);
CD3DWidget wndw; wndw.show(); wndw.resize(1280,960);
hWnd = wndw.winId();
#else
hWnd = CreateAppWindow(name,300,300);
#endif
//CD3DWidget class contains only the following definitions
CD3DWidget::CD3DWidget(QWidget * parent):QWidget(parent){ }
QPaintEngine *CD3DWidget::paintEngine (){ return NULL; }
Grazie,
CV
Altri suggerimenti
Elenco delle modifiche:
Qt 4.6 introduce molte nuove funzionalità e miglioramenti, oltre a correzioni di errori sulla serie 4.5.x.
......................
- Il motore di pittura sperimentale Direct3D è stato rimosso. La ragione per questo è che Nokia si concentra su OpenGL per hardware desktop accelerato il rendering.
......................
Per quanto valga la pena, ecco come ottenere l'output di Ogre3D su una finestra di Qt 4.5 . Fondamentalmente, prendi una superficie di rendering e la usi per renderizzare l'output. Questo è un "Qt nell'approccio applicativo D3D / OpenGL".
Ecco alcuni esempi di OpenGL con Qt 4.5 utilizzando la finestra OpenGL .
Se lo capisco correttamente, il supporto Direct3D è sperimentale e è usato solo per la pittura di finestre .