2011-09-07 13 views
6

मैं कलाकारों जो उम्मीद है कि पार मंच होगा और ओपन और C++ में लिखा है की एक कंपनी के लिए एक पूर्ण HD सक्षम 2 डी इंजन लिखने की प्रक्रिया में हूँ।पूर्ण HD 2 डी बनावट स्मृति ओपन

मुख्य समस्या यह है कि उन सभी एचडी स्प्राइट्स से निपटने का तरीका है। कलाकारों ने ग्राफिक्स को 24fps पर खींचा है और उन्हें पीएनजी अनुक्रमों के रूप में निर्यात किया जाता है। मैंने उन्हें डीडीएस में परिवर्तित कर दिया है (आदर्श नहीं, क्योंकि इसे लोड करने के लिए डायरेक्टएक्स हेडर की आवश्यकता है) DXT5 जो फाइलसाइज़ को बहुत कम करता है। खेल में कुछ दृश्य एक समय में 5 या 6 एनिमेटेड स्प्राइट हो सकता है, और इन 200 फ्रेम प्रत्येक हो सकते हैं। वर्तमान में मैं पॉइंटर्स की एक सरणी में sprites लोड कर रहा हूं, लेकिन संकुचित बनावट के साथ भी लोड करने में बहुत लंबा समय लग रहा है, और काफी मेमोरी का उपयोग करता है (लगभग पूर्ण दृश्य के लिए लगभग 500 एमबी)।

तो मेरा सवाल यह है कि क्या आपके पास फ्रेम की इतनी उच्च मात्रा को संभालने के तरीके पर कोई विचार या सुझाव हैं? वहाँ रहे हैं विचारों के एक जोड़े मैं की thought've है:, फ्लैश से

  • एक 2D कंकाल एनीमेशन प्रणाली लागू फ्रेम भंडारण png दृश्यों की जगह के लिए

    • उपयोग swf प्रारूप (मैं बारे में चिंता है जोड़ों को दिखाई दे रहा है)

    कैसल क्रैशर्स जैसे गेम महान HD ग्राफिक्स के साथ इतनी जल्दी लोड कैसे होते हैं?

  • +1

    डिस्क से लोड करने में बहुत लंबा, या GPU पर अपलोड करने में बहुत लंबा? – genpfault

    +0

    "आदर्श नहीं है, क्योंकि इसे लोड करने के लिए डायरेक्टएक्स हेडर की आवश्यकता है" आपको डीडीएस लोड करने के लिए डायरेक्ट 3 डी हेडर की आवश्यकता नहीं है। मैंने देखा है कि सबसे अच्छा संपीड़न पुस्तकालय के लिए –

    उत्तर

    2

    24 एफपीएस हाथ से तैयार एनिमेशन? क्या आपने फ्रेमरेट को कम करने पर विचार किया है? यहां तक ​​कि सिनेमा-गुणवत्ता वाली सेल एनीमेशन केवल 24-एफपीएस पर ही खींचा जाता है। यहां तक ​​कि 18 एफपीएस तक पहुंचने से आपके डेटा का 25% छुटकारा पड़ेगा।

    किसी भी मामले में, आपने निर्दिष्ट नहीं किया है जहां आपके लोड समय लंबे थे। हार्डडिस्क से लोड समस्या को याद करने के लिए लोड है, या क्या यह मुद्दा बनावट लोड करने की स्मृति है? क्या आप अक्सर GPU में बनावट डेटा के सेट स्वैप कर रहे हैं, या क्या आप लोड समय पर इसके बाहर बनावट का एक गुच्छा बनाते हैं?

    यदि यह एक डिस्क लोड मुद्दा है, तो अपने ही वास्तविक विकल्प डिस्क पर बनावट डेटा को संपीड़ित और स्मृति में संपीड़ित है। एस 3 टीसी-शैली संपीड़न संपीड़ित नहीं है; यह हार्डवेयर बनाने के लिए एक उपयोग करने योग्य संपीड़न तकनीक के रूप में डिजाइन किया गया है। आप आमतौर पर इसे मानक संपीड़न लाइब्रेरी का उपयोग कर छोटे बना सकते हैं, जैसे zlib, bzip2, या 7z। बेशक, इसका मतलब यह है कि इसे डिकंप्रेस करना है, लेकिन सीपीयू हार्डडिस्क से तेज हो रहे हैं, इसलिए यह आमतौर पर समग्र रूप से जीत होती है।

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

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

    +0

    एचएमएनएन धन्यवाद, यह मेरे मामले में प्रकट होता है कि यह बनावट अपलोड बैंडविड्थ है। मैंने बनावट को पैकेज करने के लिए zlib का उपयोग किया और पीएनजी बनावट को अनुकूलित करने के लिए ऑप्टिपिंग भी किया। इसने इसे थोड़ा तेज़ बना दिया है, लेकिन फ्रेम दर को कम करने का सहारा लेना पड़ सकता है। एक बार फिर धन्यवाद! – GracelessROB

    4

    वैसे ध्यान में रखना पहली बात यह है कि सभी प्लेटफॉर्म DXT5 (विशेष रूप से मोबाइल) का समर्थन नहीं करते हैं।

    इससे परे कि आपने बनावट को संपीड़ित करने के लिए zlib जैसे कुछ का उपयोग करने पर विचार किया है? बनावट की संभावनाएं समान समानता की उचित डिग्री होगी जिसका अर्थ यह होगा कि वे बहुत कम हो जाएंगे। इस दिन और उम्र में डिकंप्रेशन प्रोसेसर की गति के कारण सस्ता है और डिस्क से डेटा प्राप्त करने में सहेजा गया समय डिकंप्रेशन के समय से कहीं अधिक उपयोगी हो सकता है।

    अगर मैं आप थे तो मैं वहां से शुरू करूंगा।

    +2

    +1, zlib – Prime

    +0

    अधिकांश मोबाइल 500 एमबी बनावट डेटा को संभाल नहीं सकते हैं, इसलिए मुझे लगता है कि उनसे कोई फर्क नहीं पड़ता;) –

    +1

    @ निकोल: आप zlib संपीड़न के साथ कर सकते हैं और स्ट्रीमिंग। सलाह के लिए – Goz

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