2009-10-29 17 views
9

Was genau sind meine Optionen? Ich habe Programme, die ich in OpenGL und DirectX schreiben muss, und ich möchte Qt für OpenGL verwenden, und muss nicht die Hälfte meines Programms für die DirectX-Komponenten meiner Aufgabe neu implementieren.Verwenden von Qt mit DirectX?

Ich habe auf Google gesucht und habe Referenzen zu Menschen gefunden, die sich über Direct3D als Abhängigkeit von Qt beschweren, und Leute über die Implementierung von QD3DWidget QWidget QWidget ähnlich wie QGLWidget, aber niemand redet über die Implementierung es oder wo irgendwelche Beispiele sind.

Ich brauche Hilfe. Ich möchte wissen, ob es möglich ist? Was müsste ich tun, damit es funktioniert? Wurde es schon einmal gemacht?

Antwort

15

seine ziemlich einfach, als ich dachte,

-> 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;  } 

Danke,

CV

+0

Funktioniert das in der neuesten QT? Beide anderen Antworten sagen, dass die DirectX-Unterstützung experimentell war und wurde entfernt –

+0

Hallo Tom, ich habe das versucht und funktioniert perfekt. Ich konnte ein DirectX QWidget und ein OpenGL QWidget im selben QMainWindow ausführen. – blueskin

+0

@Tom J Nowell: Sie benötigen keine Unterstützung oder Integration in das Toolkit, um Direct3D allein zu verwenden. Sie benötigen lediglich ein natives Fensterhandle und weisen das Toolkit an, dieses Fenster nicht zu löschen. Die "experimentelle entfernte Unterstützung" ist, soweit ich es verstehe, ein beschleunigtes Rendering-Backend für Qt, was eine ganz andere Sache ist. –

2

Liste der Änderungen:

Qt 4.6 viele neue Funktionen und Verbesserungen sowie Fehlerbehebungen über die 4.5.x-Serie.

......................

  • Die experimentelle Direct3D Farbe Motor wurde entfernt. Der Grund für ist, dass Nokia auf OpenGL für Desktop-Hardware beschleunigt Rendering konzentriert.

......................