2011-07-18 21 views
6

मैं WinForms के अंदर 3 डी व्यू का उपयोग कैसे कर सकता हूं?3 डी?

क्या मुझे एक्सएनए का उपयोग करना चाहिए?

मैं इस ट्यूटोरियल पाया: http://create.msdn.com/en-US/education/catalog/sample/winforms_series_1

लेकिन मुझे नहीं समझ कैसे मैं अपने WinForms परियोजना के लिए सिर्फ ContentLibrary और सामग्री जोड़ सकते हैं।

या क्या स्केलफॉर्म जीएफएक्स का उपयोग करना संभव है? Half2D या 3 डी के लिए ?

+0

मैंने XNA 2.0 में कुछ अन्य लोगों के साथ यह कोशिश की थी और आम सहमति थी कि WinForms में अभी भी काम करना संभव नहीं था क्योंकि XNA ने इसे झुकाया और डेटा या कुछ पास नहीं किया। मुझे यह देखने में दिलचस्पी है कि यह 4.0 के साथ बदल गया है या नहीं। –

+1

किस तरह का 3 डी? डब्ल्यूपीएफ एक और विकल्प हो सकता है। –

+0

@ Xeon06: यह इन दिनों ठीक है। –

उत्तर

5

WPF का उपयोग करें। आप रूपों को मिश्रण और मिलान कर सकते हैं। डब्ल्यूपीएफ में एक विनफॉर्म कंटेनर है जिसे आप खिड़की में छोड़ सकते हैं और इसे भर सकते हैं।लेकिन आप छोटी शिक्षा के साथ बॉक्स जुर्माना से डब्ल्यूपीएफ का उपयोग कर सकते हैं - टिप = खिड़की के निश्चित आकार या आकार बदलने से आपके नियंत्रण न हो जाएंगे। यह सही करना मुश्किल है।

फिर एक तस्वीर के लिए एक डब्ल्यूपीएफ पैनल डालें जहां आप 3 डी चाहते हैं। इंटरनेट से 3 डी wpf कोड काटें और पेस्ट करें।

7

मैं ओपनटीके के जीएल नियंत्रण - OpenTK WinForms control का उपयोग करने की सलाह दूंगा। यह क्रॉस प्लेटफार्म है, उपयोग करने में आसान है, और ओपनजीएल पर आधारित है; जो क्रॉस-प्लेटफार्म और मोनो-अनुरूप है। इसे काम करने के लिए "हैक्स" की आवश्यकता नहीं है, और यह WinForms कंटेनर में 3 डी सामग्री को एम्बेड करने का एक बहुत ही सरल तरीका है। ओपनटीके को एलजीपीएल के तहत लाइसेंस प्राप्त है, जिसका अर्थ है कि आप इसे वाणिज्यिक अनुप्रयोगों में एम्बेड कर सकते हैं। ओपनटीके/ओपनजीएल वर्तमान में लिनक्स, मैक और विंडोज पर काम करता है और यह एक आसान तरीका है जिसे मैं .NET या मोनो एप्लिकेशन में 3 डी सामग्री को एम्बेड करने के बारे में जानता हूं। मैंने WinForms विधि में XNA की कोशिश की है, और यह कुछ हद तक भ्रमित हो रहा है, न कि सभी क्रॉस-प्लेटफॉर्म पर। फिर उन्होंने एक्सएनए 4 जारी किया, और मेरे पिछले एक्सएनए ऐप्स नए संस्करण के साथ सभी संगत नहीं थे। डायरेक्टएक्स में ओपनजीएल में आपको अक्सर यह समस्या नहीं मिलेगी।

+0

मैं किस 3 डी मॉडल एक्सटेंशन का उपयोग कर सकता हूं? – Danpe

+0

ओपनटीके की वेबसाइट पर एक ओबीजे लोडर है, और मैंने एक संशोधित ओब्जेलोडर बनाया है जिसमें अंतर्निहित टकराव का पता लगाया गया है जिसे मैं अपलोड कर सकता हूं। मुझे यकीन है कि अन्य प्रारूप भी हैं जिन्हें आप अपने मंचों में कहीं भी समर्थन प्राप्त कर सकते हैं। – IDWMaster

+0

मुझे अभी जाना है, लेकिन मैं अपने ओब्जेलोडर स्रोत कोड को आज सुबह 6:00 बजे (सेंट्रल टाइम, यूएस और कनाडा) के आसपास पोस्ट करूंगा। – IDWMaster

9

एक मानक दृश्य सी # प्रोजेक्ट (जैसे कि आप डिफ़ॉल्ट WinForms टेम्पलेट के साथ हो सकता है) से XNA सामग्री प्रोजेक्ट सीधे का संदर्भ देने का कोई तरीका नहीं है।

आपको क्या करना चाहिए एक एक्सएनए "विंडोज गेम लाइब्रेरी" प्रोजेक्ट (यहां तक ​​कि एक खाली एक) बनाना है और फिर उस परियोजना पर "सामग्री संदर्भ जोड़ें" विकल्प का उपयोग अपने एक्सएनए सामग्री प्रोजेक्ट में संदर्भ जोड़ने के लिए करें। (इसके लिए टेम्पलेट को "खाली सामग्री प्रोजेक्ट" कहा जाता है।) और फिर अपने WinForms प्रोजेक्ट में इस नई गेम लाइब्रेरी प्रोजेक्ट का संदर्भ जोड़ें।

वैकल्पिक रूप से आपको "विंडोज गेम" प्रोजेक्ट बनाने और फिर "फॉर्म जोड़ें" का उपयोग करने से रोकने के लिए कुछ भी नहीं है - जो एक खाली फॉर्म और आवश्यक असेंबली संदर्भ जोड़ देगा। मानक WinForms प्रोजेक्ट से Program.cs के लिए आपको XNA टेम्पलेट Game1.cs और Program.cs को स्वैप करना होगा (या देखें कि "WinForms 1" नमूना क्या उपयोग करता है)।

गतिशील सामग्री लोडिंग के लिए, "WinForms 2" नमूना देखें।

1

कुछ पुस्तकालय हैं जिनका आप उपयोग कर सकते हैं। आईडीडब्लूस्टर ने ओपनटीके का उल्लेख किया, जो एक विकल्प है (ओपनजीएल, इसलिए आपका माइलेज भिन्न हो सकता है; मैं एक बड़ा प्रशंसक नहीं हूं)।

यदि आप डायरेक्टएक्स का उपयोग करना चाहते हैं, जैसा कि आपने प्रश्न टैग किया है, तो कुछ और विकल्प हैं। माइक्रोसॉफ्ट Managed DirectX पेश करता था, जिसे एक्सएनए के पक्ष में हटा दिया गया है। SlimDX डायरेक्टएक्स पुस्तकालयों के लिए एक और आधुनिक आवरण है, जो उनकी अधिकांश कार्यक्षमताओं को उजागर करता है (लेकिन कुछ प्रदर्शन लागत है)। SharpDX भी उपलब्ध है, जिसे मैं स्लिम डीएक्स की तुलना में कुछ हद तक तेज मानता हूं, लेकिन मैंने इसका उपयोग नहीं किया है।

आप COM इंटरऑप का उपयोग कर सीधे कुछ डायरेक्टएक्स एपीआई का उपयोग करने में भी सक्षम हो सकते हैं। सी # और .NET समर्थन मूल घटक सहित COM घटकों के साथ अच्छा इंटरऑप। आपको IntPtr एस की एक महत्वपूर्ण राशि को संभालना होगा और कुछ मैन्युअल मार्शलिंग करना पड़ सकता है, लेकिन IDirect3DDevice में ऐसी कई विधियां नहीं हैं जो परेशानी का कारण बनेंगी (आईआईआरसी)।

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

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