2011-02-03 3 views
58

दिन में वापस आसान था; आपने अपना खुद का 3 डी सामान बनाया, फिर डायरेक्टएक्स आया, फिर ओपनजीएल आया। .NET डेवलपर्स एमडीएक्स के लिए अच्छा था। फिर एक्सएनए ने एमडीएक्स के लिए अधिग्रहण किया, लेकिन यह वही नहीं है। एक्सएनए सभी सामग्री पाइपलाइनिंग और निश्चित मॉडलों और सामानों के प्रीलोडिंग के साथ बहुत ही गेम केंद्रित है।क्या उपयोग करें? ताओ, शार्पजीएल, ओपनटीके, डायरेक्टएक्स पी/इनवोक, एक्सएनए, एमडीएक्स, स्लिम डीएक्स, विंडोज एपीआई कोडेक पैक

तो अब हम कहां खड़े हैं? पुन: खोज/परीक्षण के कुछ दिनों के बाद & त्रुटि मुझे हर जगह लगता है कि मुझे लगता है कि मुझे आधा विकसित पुस्तकालय, ओवरहेड के साथ पुस्तकालय, गंभीर सीमाएं या पुस्तकालय जो अत्यधिक जटिल हैं।

मैं "फ्री-हाथ" 3 डी सामान करना चाहता हूं। उदाहरण के लिए 3 डी में स्क्रीन पर 200k डॉट्स प्रदर्शित करना और उन्हें 30fps (Kinect गहराई छवि) पर ले जाएं। मैं 3 डी स्क्रीनसेवर, ऑडियो विश्लेषण प्लगइन्स इत्यादि बनाना चाहता हूं, जिनमें से सभी सामग्री पाइपलाइन के लिए प्रीफैब नहीं हैं, और जिनके लिए उच्च प्रदर्शन की आवश्यकता होती है। और (एहम) मैं इसे नेट से करना चाहता हूँ।

किसी को भी पुस्तकालयों के साथ अनुभव है जो आसान/समझने योग्य हैं और अभी भी कुछ उचित स्वतंत्रता और गति देता है?

+17

+1 इसके लिए उत्तर में बहुत रुचि है। –

उत्तर

13

मुझे लगता है कि OpenTK पर उतरा है। मुझे लगता है कि यह ओपनजीएल एपीआई को कम या ज्यादा प्रत्यक्ष पहुंच प्रदान करता है और निर्भरता के भार की आवश्यकता नहीं होती है।

यह समझने के लिए अपेक्षाकृत आसान है। शुरू करने के लिए कोड की कुछ (और समझने योग्य) लाइनों की आवश्यकता होती है। यह मेरे लिए ऑब्जेक्ट्स नहीं रखता है इसलिए मैं प्रत्येक पास के लिए कुछ भी बदलने के लिए स्वतंत्र हूं, जो कि बहुत अच्छा है क्योंकि मैं मुख्य रूप से असुरक्षित पॉइंटर्स के साथ स्मृति में काम कर रहा हूं।

उपयोग की आसानी के साथ गति को जोड़ना मुश्किल है। गति को सीधे 3 डी एपीआई से बात करने की आवश्यकता होती है जबकि उपयोग की आसानी अबास्ट्रक्शन की आवश्यकता होती है। इसलिए मैंने कोशिश की कुछ अन्य लोगों की तुलना में इसे निम्न स्तर एपीआई माना जाना चाहिए। अगर मैं कुछ प्रीफैब चरित्र एनीमेशन करना चाहता था तो एक्सएनए शायद बेहतर विकल्प होगा, लेकिन मेरे उपयोग के लिए (ऊपर वर्णित) यह अब तक बहुत ही आशाजनक प्रतीत होता है (हैकिंग के 4-5 घंटे)।

कुछ नमूना कोड:

private void Render() 
{ 
    // Every frame 
    GL.MatrixMode(MatrixMode.Modelview); 
    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); 
    GL.LoadMatrix(ref cameraMatrix); 

    GL.Begin(BeginMode.Points); 

    // Here I can add lots of points. I add 200k without any big problem. 
    // It seems these points could have been passed in as an array pointer too, 
    // but I'll look at that later. 
    GL.Vertex3(x2, y2, z2); 

    GL.End(); 
    glControl.SwapBuffers(); 
} 
+1

बस यह इंगित करना चाहता था कि आपके कोड में थोड़ा बग है (पहला जीएल। बेगीन कॉल अनिवार्य है)। ओपनटीके को एक्सएनए के विपरीत, निम्न-स्तरीय एपीआई के रूप में डिज़ाइन किया गया है। इसके लिए अधिक प्रयास की आवश्यकता है लेकिन आपको बदले में अधिक नियंत्रण देता है (साथ ही यह बूट करने के लिए क्रॉस-प्लेटफ़ॉर्म है)। –

+0

धन्यवाद, पहले शुरू करें हटाएं। –

+0

मुझे यकीन नहीं है कि यह एक कामकाजी उदाहरण होना चाहिए, लेकिन कैमरामैट्रिक्स मौजूद नहीं है। – AaronLS

1

हमें कुछ समय पहले इसी तरह के मुद्दे का सामना करना पड़ा और निम्नलिखित केवल हमारी राय का प्रतिनिधित्व करता है। हमारी मुख्य चिंताओं में से एक यह था कि पुस्तकालय बहुमुखी होना चाहिए, 3 डी छवियों को बहुत अच्छी गुणवत्ता, मुक्त, और इंस्टॉलर पर अतिरिक्त बाधाओं का भार नहीं डालना चाहिए, यानी एक्सएनए के साथ जहां आपको सही फाइलें स्थापित करनी होंगी। यह सिरदर्द के संभावित स्रोत की तरह लग रहा था। अंत में हम डायरेक्टएक्स के लिए बस गए और सी # में जीयूआई लिखा। 3 डी के साथ सभी आवश्यक बातचीत wndproc के साथ किया गया था। इसने हमें डायरेक्टएक्स की शक्ति और सी # के साथ जीयूआई विकास की आसानी प्रदान की। हमने इसे बिल्कुल खेद नहीं किया है।

+0

क्या आपका मतलब है कि आपने WinForms के रूप में एक डब्ल्यूपीएफ में डायरेक्टएक्स की मेजबानी की है? – Archival

+0

नहीं! केवल डायरेक्टएक्स और विनफॉर्म। Wndproc का उपयोग कर डायरेक्टएक्स प्रस्तुत सतह पर माउस और मुख्य ईवेंट भेजे गए थे। – Pedery

8

आप MDX पसंद है, तो SlimDX सही अपने गली तक होना चाहिए। यह मूल रूप से एमडीएक्स के लिए एक प्रतिस्थापन है, लेकिन बहुत से संदिग्ध डिजाइन निर्णयों के साथ तय किया गया है, और बहुत अधिक कार्यक्षमता शामिल है। एमडीएक्स के साथ आपके पास कुछ भी था, आप स्लिम डीएक्स में एक रूप में या किसी अन्य रूप में पाएंगे।

+1

मैं स्लिम डीएक्स के लिए अपने समर्थन में फेंक दूंगा। ओपनटीके और एमडीएक्स के साथ गड़बड़ करने के बाद, मैं अपनी परियोजना में 3 डी ग्राफिक्स करने के लिए एपीआई के रूप में स्लिम डीएक्स पर बस गया। यह बहुत साफ, अच्छी तरह डिज़ाइन किया गया है, और सी ++ डीएक्स उदाहरणों का अनुवाद करना आसान है। –

+2

अब टेबल पर SharpDX (डायरेक्टएक्स सीपीपी हेडर से उत्पन्न) भी है। मोनो-सपोर्ट के साथ भी। http://code.google.com/p/sharpdx/ –

3

वैकल्पिक रूप से ओपनजीएल: ओपनजीएल डॉटनेट के लिए एक और सी # रैपर पैकेज है। मेरे लिए बहुत अच्छा काम करता है! इसे http://www.taylaninan.com/opengl-dotnet.php पर देखें।

यह ओपनजीएल को संस्करण 4.4 तक लपेटता है और 550+ ओपनजीएल एक्सटेंशन का समर्थन करता है। यह डीवीआईएल के लिए जीएलयू, जीएलयूटी, फ्रीग्लूट, देविल (डेवलपर की छवि लाइब्रेरी), आईएलयू और आईएलयूटी का भी समर्थन करता है।

यह उपरोक्त पुस्तकालयों के लिए निम्न स्तर का एपीआई है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^