2009-10-29 9 views
9

私のオプションは何ですか?私はOpenGLDirectXに書き込む必要があるプログラムを持っていますが、OpenGLにはQtを使用したいと思いますし、私のタスクのDirectXコンポーネントの半分のプログラムを再実装する必要はありません。DirectXでQtを使用しますか?

私はGoogleを見て、Direct3DがQtに依存していると不平を言っている人物を見つけました。QD3DWidgetをQLidgetと同様の方法でサブクラス化することについて話している人は、またはどこかの例がある場所。

私は助けが必要です。それが可能かどうか知りたいですか?それを稼働させるためには何が必要でしょうか?それは以前にされていますか?

答えて

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

こんにちはTom、私はこれを試して、完全に動作します。同じQMainWindowでDirectX QWidgetとOpenGL QWidgetを実行することができました。 – blueskin

+0

@Tom J Nowell:Direct3Dを単独で使用するには、ツールキットにサポートや統合は必要ありません。ネイティブウィンドウハンドルとそのウィンドウをクリアしないようにツールキットに指示するだけです。 "実験的なサポートの削除"は、私がQtのレンダリングバックエンドを高速化していることを理解している限り、全く違うものです。 –

1

すべての価値についてはhere is how to get Ogre3D's output to a Qt 4.5 windowです。基本的に、レンダリングサーフェスをつかんで、それを使って出力をレンダリングします。これは「Q3 in D3D/OpenGLアプリケーションのアプローチ」です。

ここにはQt 4.5 using OpenGL windowというOpenGLの例があります。

私が正しく理解していれば、Direct3Dのサポートは実験的であり、is only used for painting of windowsです。変更の

2

一覧:

のQt 4.6は多くの新機能や改善だけでなく、バ​​グ修正 4.5.xのシリーズ以上を紹介します。

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

  • 実験Direct3Dのペイントエンジンが削除されました。 の理由は、ノキアがデスクトップハードウェアのOpenGLに焦点を当てており、 のレンダリングを加速しているからです。

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

関連する問題