2009-10-29 38 views
9

¿Cuáles son exactamente mis opciones? Tengo programas que necesito escribir en OpenGL y DirectX, y me gustaría usar Qt para OpenGL, y no tener que volver a implementar la mitad de mi programa para los componentes de DirectX de mi tarea.¿Usando Qt con DirectX?

He buscado en Google y he encontrado referencias a personas quejándose de que Direct3D es una dependencia de Qt, y personas hablando de implementar QD3DWidget subclasificando QWidget de una manera similar a QGLWidget, pero nadie habló sobre cómo implementar o donde hay algún ejemplo.

Necesito ayuda. Quiero saber si es posible? ¿Qué debería hacer para que funcione? ¿Se ha hecho antes?

Respuesta

15

su bastante sencillo de lo que pensaba,

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

Gracias,

CV

+0

Funciona en el último QT? Las otras dos respuestas dicen que el soporte DirectX fue experimental y se eliminó –

+0

Hola Tom, lo intenté y funciona perfectamente. Pude ejecutar DirectX QWidget y OpenGL QWidget en el mismo QMainWindow. – blueskin

+0

@Tom J Nowell: No necesita ningún soporte o integración en el kit de herramientas para usar Direct3D por sí mismo, todo lo que necesita es un identificador de ventana nativo y decirle al kit de herramientas que evite borrar esa ventana. El "soporte experimental removido" es, hasta donde yo lo entiendo, un backend de renderizado acelerado para Qt, que es algo completamente diferente. –

2

Lista de cambios:

Qt 4.6 introduce muchas nuevas características y mejoras, así como correcciones de errores más de la serie 4.5.x.

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

  • El motor de pintura Direct3D experimental se ha eliminado. El motivo de es que Nokia se enfoca en OpenGL para hardware de escritorio acelerado en la representación de .

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