2009-10-29 10 views
9

मेरे विकल्प वास्तव में क्या हैं? मेरे पास ऐसे प्रोग्राम हैं जिन्हें मुझे OpenGL और DirectX में लिखने की आवश्यकता है, और मैं ओपनजीएल के लिए Qt का उपयोग करना चाहता हूं, और मेरे कार्य के डायरेक्टएक्स घटकों के लिए आधे कार्यक्रम को दोबारा लागू नहीं करना है।डायरेक्टएक्स के साथ क्यूटी का उपयोग करना?

मैं गूगल पर देखा है और मैं को लागू करने QD3DWidget QGLWidget लिए एक समान फैशन में उप-classing QWidget बारे में बात कर क्यूटी की निर्भरता जा रहा है Direct3D के बारे में शिकायत लोगों को, और लोगों के लिए संदर्भ पाया है, अभी तक कोई भी कैसे लागू करने के लिए के बारे में बात यह या जहां कोई उदाहरण हैं।

मुझे सहायता चाहिए। मैं जानना चाहता हूं कि यह संभव है या नहीं? इसे काम करने के लिए मुझे क्या करने की ज़रूरत होगी? क्या यह पहले किया गया है?

उत्तर

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

धन्यवाद,

सीवी

+0

क्या यह नवीनतम क्यूटी में काम करता है? दोनों अन्य उत्तरों का कहना है कि डायरेक्टएक्स समर्थन प्रयोगात्मक था और –

+0

हैलो टॉम हटा दिया गया था, मैंने कोशिश की और पूरी तरह से काम करता है। मैं एक ही QMainWindow में एक DirectX QWidget और एक OpenGL QWidget चलाने में सक्षम था। – blueskin

+0

@ टॉम जे नोवेल: आपको सीधे अपने द्वारा Direct3D का उपयोग करने के लिए टूलकिट में किसी भी समर्थन या एकीकरण की आवश्यकता नहीं है, आपको केवल एक विंडो विंडो हैंडल की आवश्यकता है और टूलकिट को उस विंडो को साफ़ करने से बचने के लिए कहें। "प्रयोगात्मक हटाया गया समर्थन" है जहां तक ​​मैं इसे क्यूटी के लिए एक त्वरित प्रतिपादन बैकएंड समझता हूं, जो एक पूरी तरह से अलग बात है। –

1

इसके सभी मूल्य, here is how to get Ogre3D's output to a Qt 4.5 window के लिए। असल में, आप एक प्रतिपादन सतह लेते हैं और आप इसे आउटपुट प्रस्तुत करने के लिए उपयोग करते हैं। यह "डी 3 डी/ओपनजीएल अनुप्रयोग दृष्टिकोण में क्यूटी" है।

यहां Qt 4.5 using OpenGL window के साथ ओपनजीएल उदाहरण हैं।

अगर मैं इसे सही ढंग से समझता हूं, तो डायरेक्ट 3 डी समर्थन प्रयोगात्मक और is only used for painting of windows है।

2

परिवर्तन की सूची:

क्यूटी 4.6 कई नई सुविधाओं और सुधारों के साथ-साथ bugfixes 4.5.x श्रृंखला में प्रस्तुत करता है।

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

  • प्रयोगात्मक Direct3D रंग इंजन हटा दिया गया है। का कारण यह है कि नोकिया डेस्कटॉप हार्डवेयर के लिए ओपनजीएल पर केंद्रित है प्रतिपादन।

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