2009-10-29 35 views
9

Chính xác những lựa chọn của tôi là gì? Tôi có các chương trình tôi cần phải viết trong OpenGLDirectX và tôi muốn sử dụng Qt cho OpenGL và không phải triển khai lại một nửa chương trình của mình cho các thành phần DirectX trong nhiệm vụ của mình.Sử dụng Qt với DirectX?

Tôi đã xem xét Google và tôi đã tìm thấy các tham chiếu đến những người phàn nàn về Direct3D là phụ thuộc của Qt và mọi người nói về việc triển khai QWidget phân lớp QD3DWidget theo cách tương tự với QGLWidget, nhưng chưa ai nói về cách triển khai nó hoặc bất kỳ ví dụ nào.

Tôi cần trợ giúp. Tôi muốn biết nếu nó có thể? Tôi cần làm gì để nó hoạt động? Nó đã được thực hiện trước đây chưa?

Trả lời

15

của nó khá đơn giản hơn tôi nghĩ,

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

Cảm ơn,

CV

+0

Tính năng này có hoạt động trong QT mới nhất không? Cả hai câu trả lời khác nói rằng sự hỗ trợ DirectX đã được thử nghiệm và đã được gỡ bỏ –

+0

Xin chào Tom, tôi đã thử điều này và hoạt động hoàn hảo. Tôi đã có thể chạy DirectX QWidget và OpenGL QWidget trong cùng một QMainWindow. – blueskin

+0

@Tom J Nowell: Bạn không cần bất kỳ sự hỗ trợ hoặc tích hợp nào trong bộ công cụ để sử dụng Direct3D, tất cả những gì bạn cần là xử lý cửa sổ gốc và yêu cầu bộ công cụ tránh để xóa cửa sổ đó. "Hỗ trợ gỡ bỏ thử nghiệm" là như xa như tôi hiểu nó một phụ trợ dựng hình tăng tốc cho Qt, đó là một điều hoàn toàn khác nhau. –

1

Đối với tất cả giá trị của nó, here is how to get Ogre3D's output to a Qt 4.5 window. Về cơ bản, bạn lấy một bề mặt dựng hình và bạn sử dụng nó để hiển thị đầu ra. Đây là cách tiếp cận ứng dụng "Qt trong D3D/OpenGL".

Dưới đây là ví dụ về OpenGL với Qt 4.5 using OpenGL window.

Nếu tôi hiểu chính xác, hỗ trợ Direct3D là thử nghiệm và is only used for painting of windows.

2

Danh sách thay đổi:

Qt 4.6 giới thiệu nhiều tính năng mới và cải tiến cũng như sửa lỗi trên series 4.5.x.

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

  • Động cơ sơn Direct3D thực nghiệm đã được gỡ bỏ. Lý do cho đây là Nokia tập trung vào OpenGL cho phần cứng máy tính để bàn tăng tốc độ hiển thị .

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

Các vấn đề liên quan