2009-10-29 2 views
9

Что именно мои варианты? У меня есть программы, которые нужно написать в OpenGL и DirectX, и я бы хотел использовать Qt для OpenGL и не должен повторно реализовывать половину своей программы для компонентов DirectX моей задачи.Использование Qt с DirectX?

Я искал Google, и я нашел ссылки на людей, жалующихся на Direct3D, являющихся зависимостью Qt, и люди, говорящие о внедрении QD3DWidget, подклассифицируя QWidget аналогично QGLWidget, но никто не говорил о том, как реализовать это или где есть какие-то примеры.

Мне нужна помощь. Я хочу знать, возможно ли это? Что мне нужно сделать, чтобы заставить его работать? Это было сделано раньше?

ответ

15

его довольно просто, чем я думал,

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

Спасибо,

CV

+0

Работает ли это в последнем QT? Оба других ответа говорят, что поддержка DirectX была экспериментальной и была удалена –

+0

Привет, Том, я пробовал это и отлично работает. Я смог запустить DirectX QWidget и OpenGL QWidget в том же QMainWindow. – blueskin

+0

@Tom J Nowell: вам не нужна поддержка или интеграция в инструментарий для использования Direct3D сама по себе, все, что вам нужно, это ручка дескриптора окна и указание инструментария, чтобы избежать очистки этого окна. «Экспериментальная удаленная поддержка» - насколько я понимаю, это ускоренный рендеринг для Qt, что совершенно другое. –

1

При всей своей ценности, here is how to get Ogre3D's output to a Qt 4.5 window. В принципе, вы захватываете поверхность рендеринга, и вы используете его для рендеринга вывода. Это «подход Qt в приложении D3D/OpenGL».

Примеры OpenGL с Qt 4.5 using OpenGL window.

Если я правильно понимаю, поддержка Direct3D является экспериментальной и is only used for painting of windows.

2

Список изменений:

Qt 4.6 содержит множество новых функций и улучшений, а также исправления ошибок над серии 4.5.x.

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

  • Экспериментальная Direct3D краска двигатель был удален. Причиной для является то, что Nokia фокусируется на OpenGL для аппаратного ускорения рабочего стола рендеринга.

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

Смежные вопросы