2008-10-06 18 views
6

मैं 32 bit processor with limited memory (512k फ़्लैश, 32k रैम) के लिए एक प्रोग्राम प्रोग्रामिंग कर रहा हूं।गतिशील (एल्गोरिदमिक) ग्राफिक्स के लिए तकनीक

इस डिवाइस पर display 16 बिट रंग के साथ 128x160 है, जो आमतौर पर 40k राम का उपभोग करेगा यदि मैं इसे अपने प्रोसेसर पर बफर करना चाहता हूं। मेरे पास इतना रैम नहीं है, इसलिए मैं फ्लाई पर स्क्रीन डेटा उत्पन्न करने के लिए तकनीक, टिप्स, चाल, विचारों की तलाश में हूं।

चीज़ें है कि मदद कर सकता है:

  • शायद आप सीमा की इस तरह के लिए एक संसाधन के बारे में पता
  • शायद तुम मक्खी
  • पर आकर्षक ग्राफिक्स बना लेने के बाद वहाँ एक सामान्य एल्गोरिथ्म मैं का उपयोग कर सकते है जब मैं प्रदर्शन
  • सरल वेक्टर प्रतिपादन तकनीक (या मुफ्त (बीएसडी/एमआईटी/अपाचे) स्रोत)
  • ????? को स्केल पर प्रोग्राम मेमोरी (अल्फा ब्लेंडिंग सहित) में तत्वों को गठबंधन करने के लिए

मेरे पास गुणक है, लेकिन कोई फ़्लोटिंग पॉइंट प्रोसेसर नहीं है। डिस्प्ले के पास डिस्प्ले के लिए एक बहुत ही सरल नियंत्रक और स्मृति है - लेकिन पढ़ता है और लिखता महंगा होता है इसलिए मैं इसे अपने वर्कस्पेस के रूप में उपयोग नहीं करना चाहता अगर मैं इससे बच सकूं।

-Adam

उत्तर

8

एक तरह से, आप जहां Tandys, स्पेक्ट्रम और जल्दी पीसी के समय में काफी एक ही स्थिति खेल डेवलपर्स में हैं। तो, यहां मेरी सिफारिश है:

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

आप अपनी अधिकांश "ब्लैक बुक" here पढ़ सकते हैं।

अतिरिक्त, आप शायद पुरानी बीबीएस फाइलें पा सकते हैं जो अधिकांश लोग ग्राफिक्स प्रोग्रामिंग here सीखने के लिए दिन में वापस उपयोग करते थे। बस ग्राफिक्स, लाइनों, और क्या नहीं के लिए खोजें।

आशा है कि मदद करता है!

अद्यतन: मुझे स्क्रीन पर चीजों को चित्रित करने के पहले प्रयासों में this का उपयोग करना भी याद है। यह नहीं बता सकता कि मैंने इसके पीछे गणित को समझने की कोशिश में कितना समय बिताया (ठीक है, उचित होने के लिए मैं उस समय 15 की तरह था)। 3 डी के लिए बहुत अच्छा (और सरल) परिचय, और परिवर्तन, बहुभुज-fillers और interpolation पर एक बहुत अच्छा प्रीमियर।

3

स्क्रीन पर आप किस प्रकार का डेटा दिखाएंगे?

यदि यह फोटोग्राफिक छवियां नहीं है, तो आप पैलेट का उपयोग करने पर विचार कर सकते हैं। उदाहरण के लिए: 8 बिट्स प्रति पिक्सेल का उपयोग करके 256 रंग पैलेट को 20kb की आवश्यकता होगी, (लुकअप टेबल के लिए 256 x 2bytes) जो कम से कम 40kb से बेहतर है।

2

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

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

थोड़ा ऑफटॉपिक लेकिन इस तरह निंटेंडो डीएस 3 डी हार्डवेयर काम करता है। यदि आप एक ही वाई-समन्वय के आस-पास बहुत सारे बहुभुज प्रस्तुत करने का प्रयास करते हैं तो आप इसे देख सकते हैं - polys यादृच्छिक रूप से झिलमिलाहट और स्क्रीन-रीफ्रेश के रूप में रेंडरिंग हार्डवेयर से आगे निकल जाएगा।

इसके अलावा, मैं दूसरे पोस्टर के सुझाव को दूसरी बार दूंगा कि आप पैलेटिज्ड प्रतिपादन का उपयोग करते हैं। 16 बिट पिक्सल पर तेज़ गणित करना बहुत मुश्किल है, लेकिन अगर आप अपने पैलेट को कैसे रखते हैं, तो आप चालाक हैं, तो 8 बिट में तेज़।

0

कुछ विचार है कि अच्छा ग्राफिक्स और कम स्मृति गठबंधन होगा: फ्लैश में

  • स्टोर पृष्ठभूमि और स्प्राइट।
  • आधे बाइट्स तक पैलेट का उपयोग करके रैम में गतिशील रूप से जेनरेट किए गए ग्राफिक्स स्टोर करें।
  • एलसीडी ड्राइवर की विंडोिंग सुविधा का उपयोग केवल उस स्क्रीन के हिस्से को अपडेट करने के लिए करें, जिसकी आपको आवश्यकता है।
संबंधित मुद्दे