Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Qt with DirectX?

What exactly are my options? I have programs I need to write in OpenGL and DirectX, and I'd like to use Qt for OpenGL, and not have to re-implement half my program for the DirectX components of my task.

I've looked on Google and I have found references to people complaining about Direct3D being a dependency of Qt, and people talking about implementing QD3DWidget sub-classing QWidget in a similar fashion to QGLWidget, yet nobody talked about how to implement it or where any examples are.

I need help. I want to know if it is possible? What would I need to do to get it working? Has it been done before?

like image 979
Tom J Nowell Avatar asked Oct 29 '09 02:10

Tom J Nowell


2 Answers

its pretty straightforward than I thought,

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

Thanks,

CV

like image 192
Chenna V Avatar answered Oct 12 '22 22:10

Chenna V


List of changes:

Qt 4.6 introduces many new features and improvements as well as bugfixes over the 4.5.x series.

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

  • The experimental Direct3D paint engine has been removed. The reason for this is that Nokia focuses on OpenGL for desktop hardware accelerated rendering.

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

like image 27
TopSergey Avatar answered Oct 13 '22 00:10

TopSergey