2013-01-25 35 views
5

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

मुझे क्या पूछने का अर्थ है, छवि को संपीड़ित करने से हीप आकार आवंटन कम हो जाएगा? उदाहरण के लिए, मेरी पीएनजी पृष्ठभूमि (2000 तक 2000 पिक्सल में) लगभग 1.5 एमबी है। पीएनजी संपीड़न की एक श्रृंखला के बाद (टिनीपीएनजी और पीएनजी गौंटलेट जैसे सॉफ़्टवेयर के माध्यम से), पृष्ठभूमि का आकार काफी कम होकर 712 केबी हो गया। यहां संपीड़ित छवि मूल के समान ही है (2000 तक 3000)।

क्या मूल पृष्ठभूमि आकार (1.5 एमबी) के लिए ढेर आकार आवंटन संकुचित (712 केबी) के समान होगा?

+1

बहुत अच्छा सवाल है। जवाब शायद "हां" है, क्योंकि ग्राफिक्स सिस्टम को स्क्रीन पर आकर्षित करने के लिए असम्पीडित छवियों की आवश्यकता होती है, लेकिन मुझे यकीन नहीं है। मैं 1500 से 1000 तक पृष्ठभूमि को कम करने की कोशिश करता हूं, और देख सकता हूं कि स्मृति खपत चार गुना गिर जाती है या नहीं। – dasblinkenlight

+0

हां, मैं कोशिश करता हूं कि जैसे ही मैं अन्य मॉड्यूल के साथ समाप्त हो जाऊं। मुझे यकीन नहीं है कि इस बारे में कैसे जाना है, लेकिन छवि संपीड़न करने के बाद, खेल के एफपीएस में काफी वृद्धि हुई है। हालांकि, मुझे पूरी तरह से यकीन नहीं है कि ढेर का आकार कम हो गया है या नहीं। – dabaerju

उत्तर

1

उत्तर हाँ है, संपीड़ित और असम्पीडित छवि दोनों ही स्मृति की मात्रा पर कब्जा करते हैं - अंत में वे आर, जी, बी (ए) मानों के ग्रिड के रूप में समाप्त होते हैं।
एकमात्र समय जब आप कुछ स्मृति को बचा सकते हैं तो यह है कि यदि आप संपीड़न के एक प्रकार का उपयोग कर रहे हैं जो GPU सीधे समर्थन करता है (उदा। ओपनजीएल बनावट के लिए एस 3 टीसी संपीड़न)।

संपीड़न दो चीजों को कम करता है: डिस्क पर फ़ाइल आकार, और फ़ाइल लोड करने के लिए आवश्यक आईओ समय की मात्रा (हालांकि यह बचत डिकंप्रेशन प्रक्रिया द्वारा ऑफसेट हो सकती है)।

हालांकि आप छवि को ARGB_8888 (उदा। आरजीबी_565) के अलावा बिटमैप प्रकार में लोड करने पर विचार कर सकते हैं - इससे बिटमैप को स्टोर करने के लिए आवश्यक स्मृति की मात्रा कम हो जाएगी (लेकिन छवि की गुणवत्ता कम हो जाएगी)।

+0

मैं बहुत परेशान था कि मैं इन छवियों को संपीड़ित करने के बाद भी आउटऑफमेमरी अपवाद क्यों प्राप्त कर रहा था। जहां तक ​​यह जाता है, अब मुझे पता है कि संपीड़न केवल स्क्रीन पर प्रदर्शन में सुधार करता है और साथ ही लोड होने में लगने वाले समय को भी कम करता है। इसे साफ़ करने के लिए बहुत बहुत धन्यवाद! मुझे लगता है कि बड़े ढेर आकार की अनुमति देने या फ़ाइल आकार को कम करने के अलावा कोई रास्ता नहीं है। – dabaerju

+1

आप छवि को ARGB_8888 के अलावा बिटमैप प्रकार में लोड कर सकते हैं (उदा। आरजीबी_565 - यह आधा जितनी मेमोरी का उपयोग करेगा)। –