2008-09-12 10 views
7

में ग्राफिक्स प्रस्तुत करना 0 #और XNA से सी # में ग्राफिक्स प्रस्तुत करने का कोई और तरीका है?सी #

(एक टाइल नक्शा संपादक का विकास। के लिए)

+0

डेविड, बस आपके प्रश्न "समझने वाले पॉइंटर्स" को देखा। महान सवाल, महान जवाब! उस पोस्ट में उल्लिखित सभी बिंदु नीचे दिए गए मेरे "असुरक्षित" उत्तर पर भी लागू होते हैं। – Ash

उत्तर

8

SDL.NET समाधान मैं प्यार करने के लिए आ गया है। यदि आपको इसके शीर्ष पर 3 डी की आवश्यकता है, तो आप इसके अंदर प्रस्तुत करने के लिए ताओ.ऑपनजीएल का उपयोग कर सकते हैं। यह तेज़ है, उद्योग मानक (SDL, वह है), और क्रॉस-प्लेटफ़ॉर्म।

+0

बहुत बढ़िया! मैं वास्तव में एसडीएल से परिचित हूँ। मैं इसे देखने जा रहा हूँ। –

+0

उन्होंने अपनी विकी को स्थानांतरित कर दिया है ताकि लिंक अब काम न करे। बस goto http://cs-sdl.sourceforge.net/ और वहां से नेविगेट करें –

3

हां, मैंने एक विंडोज़ फॉर्म नियंत्रण लिखा है जो डायरेक्टएक्स 9.0 को लपेटता है और वीडियो सतह के प्रत्यक्ष पिक्सेल स्तर में हेरफेर प्रदान करता है। Unsafe C# and pointers for 2D rendering, good or bad?

हालांकि यह अपेक्षाकृत उच्च प्रदर्शन है, यह असुरक्षित संकलक विकल्प की आवश्यकता के रूप में यह संकेत का उपयोग करता है कुशलता से स्मृति का उपयोग करने के लिए:

मैं वास्तव में अगर वहाँ दूसरे को बेहतर तरीके हैं पूछ स्टैक ओवरफ़्लो पर एक और पोस्ट में लिखा था। इसलिए इस पहले की पोस्ट का कारण।

  1. डाउनलोड DirectX एसडीके:

    यह आवश्यक कदम का एक उच्च स्तरीय है।

  2. नया सी # Windows Forms प्रोजेक्ट बनाएं और स्थापित माइक्रोसॉफ्ट डायरेक्टएक्स असेंबली का संदर्भ लें।
  3. प्रेजेंटेशन पैरामीटर्स (विंडो, बैक बफरिंग इत्यादि) के साथ एक नई डायरेक्टएक्स डिवाइस ऑब्जेक्ट शुरू करें।
  4. सतह "पिच" और वर्तमान प्रदर्शन मोड (प्रति पिक्सेल बिट्स) रिकॉर्ड करने के लिए डिवाइस लेते हुए डिवाइस बनाएं।
  5. जब आपको कुछ प्रदर्शित करने की आवश्यकता होती है, Lock बैकबफर सतह और सतह मेमोरी की शुरुआत में लौटा हुआ पॉइंटर स्टोर करें।
  6. पॉइंटर अंकगणित का उपयोग करें, सतह पिच, बिट्स प्रति पिक्सेल और वास्तविक x/y पिक्सेल समन्वय के आधार पर डेटा में वास्तविक पिक्सेल स्थिति की गणना करें।
  7. सादगी के लिए मेरे मामले में मैं 32   बीपीपी पर चिपक रहा हूं, जिसका मतलब है कि एक पिक्सेल सेट करना उतना ही आसान है: * (सतह सूचक + (वाई * पिच + एक्स)) = रंग। फ्रॉमगैग (255,0,0);
  8. ड्राइंग समाप्त होने पर, Unlock बैक बफर सतह। सतह प्रस्तुत करें।
  9. आवश्यकतानुसार चरण 5 से दोहराएं।

ध्यान रखें कि इस दृष्टिकोण को लेने से आपको लक्षित सतह के वर्तमान प्रदर्शन मोड (पिच और बिट्स प्रति pxiel) की जांच करने के बारे में बहुत सावधान रहना होगा। आपके प्रोग्राम चलने के दौरान विंडो आकार बदलने या स्क्रीन प्रारूप में बदलाव से निपटने के लिए आपको एक रणनीति की आवश्यकता होगी।

1

आप विजुअल स्टूडियो और/या अभिव्यक्ति मिश्रण का उपयोग करके WPF में देखने का प्रयास कर सकते हैं। मुझे यकीन नहीं है कि आप कैसे परिष्कृत हो रहे हैं, लेकिन यह एक साधारण संपादक को संभालने में सक्षम होना चाहिए। अधिक जानकारी के लिए यह MSDN Article देखें।

2
  • तेजी से 3 डी ग्राफिक्स के लिए प्रबंधित डायरेक्टएक्स (माइक्रोसॉफ्ट। डायरेक्टएक्स नेमस्पेस)। यह डायरेक्टएक्स एपीआई पर एक ठोस .NET wrapper है, जो बनाने के लिए कुछ प्रदर्शन हिट के साथ आता है।नेट वस्तुओं और marshalling। जब तक आप एक पूर्ण विशेषीकृत आधुनिक 3 डी इंजन नहीं लिख रहे हैं, यह ठीक काम करेगा।

  • विंडो प्रेजेंटेशन फाउंडेशन (डब्ल्यूपीएफ) (विंडोज़। मीडिया नेमस्पेस) - 2 डी ग्राफिक्स के लिए सबसे अच्छा विकल्प। इसके अलावा 3 डी क्षमताओं सीमित है। वेक्टर, हार्डवेयर त्वरित संकल्प-स्वतंत्र ढांचे के साथ विंडोज फॉर्म को प्रतिस्थापित करने के उद्देश्य से। बहुत सुविधाजनक, कस्टम नियंत्रण, संसाधन, डेटा बाध्यकारी, घटनाओं और आदेशों के कई स्वादों का समर्थन करता है ... इसमें कुछ डब्ल्यूटीएफ भी हैं। गति आमतौर पर जीडीआई की तुलना में तेज़ होती है और डायरेक्टएक्स की तुलना में धीमी होती है, और यह निर्भर करती है कि आप चीजें कैसे करते हैं (एक समझदार तरीके से फिर से लिखने के बाद 60 गुना तेजी से काम करने के लिए कुछ देखा जाता है)। हमने एक एकल (और सर्वश्रेष्ठ नहीं) पीसी पर रीयल-टाइम संकेतक, ग्राफ और प्लॉट से भरे 3 1280x1024 स्क्रीन को कार्यान्वित करने में सफलता प्राप्त की थी।

0

Cairo एक विकल्प है। मैं वर्तमान में जीडीआई + और काहिरा दोनों का उपयोग कर अपने मैपिंग सॉफ्टवेयर को फिर से लिख रहा हूं। इसमें अन्य सुविधाओं के बीच एक टाइल मैप जनरेटर है।

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

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