जवाबों:
JPG और PNG फाइलें लगभग हमेशा मेमोरी की तुलना में ऑन-डिस्क में छोटी होंगी; कच्चे आरजीबी डेटा प्राप्त करने के लिए उन्हें उड़ान भरने के लिए विघटित होने की आवश्यकता होती है, इस प्रकार लोडिंग के लिए अधिक प्रोसेसिंग पावर और बाद में अधिक रैम की आवश्यकता होती है। इतने सारे आधुनिक इंजन डिस्क पर एक ही प्रारूप को संग्रहीत करने का विकल्प चुनते हैं जैसा कि वे मेमोरी में करते हैं, जो उन फाइलों की ओर जाता है जो बनावट की मेमोरी आवश्यकताओं के समान आकार (लेकिन यह भी एक पीएनजी या जेपीजी से बड़ा है)। RGB / RGBA और S3TC / DXTn / BCn सबसे व्यापक रूप से उपयोग किए जाने वाले प्रारूप हैं, क्योंकि इन्हें बिना किसी प्रोसेसिंग के सीधे मेमोरी में पढ़ा जाता है (DXT टेक्सचर precompressed हैं)।
तो, ये विभिन्न सामान्य बनावट प्रारूपों के लिए आकार हैं:
यदि आप एक छवि का उपयोग mipmaps के साथ करते हैं , तो बनावट को 4/3 के रूप में अधिक मेमोरी की आवश्यकता होगी। इसके अतिरिक्त, बनावट की चौड़ाई और ऊंचाई को आंतरिक रूप से पुराने या कम सक्षम हार्डवेयर पर दो की शक्ति और कुछ बहुत ही सीमित हार्डवेयर पर भी एक वर्ग होने के लिए मजबूर किया जा सकता है।
DXT पर अधिक जानकारी: यह एक हानिपूर्ण संपीड़न है; इसका मतलब है, बनावट को संपीड़ित करते समय कुछ रंग डेटा खो जाता है। यह आपकी बनावट पर नकारात्मक प्रभाव डालता है, तेज सीमाओं को विकृत करता है और ग्रेडिएंट पर "ब्लॉक" बनाता है; लेकिन लाभ नुकसान से बहुत बेहतर हैं (यदि आपके पास एक बनावट है जो कि डीएक्सटी में बुरी तरह से खराब दिखती है, तो बस इसे असम्पीडित रखें, दूसरे लोग आकार के नुकसान के लिए बनाएंगे)। इसके अलावा, चूंकि पिक्सेल निश्चित आकार के ब्लॉक से संकुचित होते हैं, इसलिए बनावट की चौड़ाई और ऊंचाई चार से अधिक होनी चाहिए।
जाहिर है: यह प्रारूप पर निर्भर करता है।
चलो 256 पिक्सेल 256 बनावट द्वारा 256 लेते हैं। यदि यह एक अल्फा चैनल ( Color
XNA में) के साथ 32-बिट असम्पीडित है, तो यह 256KB ( 256*256*4
बाइट्स) लेता है ।
16-बिट प्रारूप (जैसे :)Bgr565
स्पष्ट रूप से आधा आकार होगा - 128KB ।
तब आप संपीड़ित स्वरूपों पर पहुंच जाते हैं। XNA में आपके पास DXT1, DXT3 और DXT5 ( S3 संपीड़न के रूप में भी जाना जाता है ) है। यह एक हानिपूर्ण संपीड़न प्रारूप है। यह भी एक ब्लॉक आधारित स्वरूप है - जिसका अर्थ है कि आप कर सकते हैं इसे से नमूना (क्योंकि आप जानते हैं जो ब्लॉक एक पिक्सेल में है)। यह तेज़ भी है, क्योंकि आप कम बैंडविड्थ का उपयोग करते हैं।
DXT1 का संपीड़न अनुपात 8: 1 है और DXT3 और DXT5 के लिए 4: 1 है।
तो 256x256 के एक DXT1 छवि है 32 केबी । और DXT3 या DXT5 64KB है ।
और फिर वहाँ mipmapping है । यदि इसे सक्षम किया जाता है, तो यह ग्राफिक्स मेमोरी में छवियों की एक श्रृंखला बनाता है जो प्रत्येक पिछले आकार का आधा होता है। तो हमारी 256x256 छवि के लिए: 128x128, 64x64, 32x32, 16x16, 8x8, 4x4, 2x2, 1x1। मूल मानचित्रण के साथ एक बनावट मूल के आकार का लगभग 133% है।
अधिकांश जीपीयू केवल एक बहुत विशिष्ट संपीड़न प्रारूप पढ़ सकते हैं। जैसे। बीसी *, डीएक्सटी *, पीएनजी जैसे प्रारूप नहीं। तो हाँ, यह अधिकांश भाग के लिए सच है कि .png डिस्क की तुलना में वीडियो मेमोरी में अधिक स्थान लेगा।
बनावट को वीडियो मेमोरी और सिस्टम मेमोरी दोनों में संपीड़ित या असम्पीडित रखा जा सकता है।
असम्पीडित बनावट के लिए, अंगूठे का सामान्य नियम यह है कि यह वीडियो मेमोरी में उतना ही स्थान लेगा, जितना कि सिस्टम मेमोरी में असम्पीडित रूप में होता है।
DXT1 संकुचित बनावट के लिए। GPU आपकी बनावट में प्रत्येक 4x4 टाइल के लिए 8 बाइट्स संग्रहीत करता है। असम्पीडित डेटा (8-बिट्स पर आरजीबी चैनल) आमतौर पर 4x4x3 = 48 बाइट्स होगा, इसलिए यह 6: 1 का संपीड़न अनुपात है। DXT3 / DXT5 संपीड़ित बनावट के लिए, GPU आपकी बनावट में प्रत्येक 4x4 टाइल के लिए 16 बाइट्स संग्रहीत करता है। यह 3: 1 का थोड़ा कम संपीड़न अनुपात है।
दोनों असंपीड़ित और संपीड़ित बनावट के साथ कुछ चेतावनी हैं:
अधिकांश मेमोरी को एक निश्चित आकार के पन्नों में (जीपीयू के बीच भिन्न होता है) आवंटित किया जाता है। जैसे। 4KB और अक्सर जो उप-आवंटित नहीं होता है और अन्य gpu डेटा के साथ साझा किया जाता है। अर्थात। यदि आपकी बनावट पदचिह्न पृष्ठ आकार से छोटी है, तो vid मेम में पदचिह्न प्रायः पृष्ठ आकार के होंगे।
कुछ gpus में बहुत विशिष्ट संरेखण आवश्यकताएँ हैं। अतीत में, कुछ GPU की आवश्यकता थी कि बनावट आकार में 2 की शक्ति हो। बनावट से नमूना लेने के दौरान एक्सेस लोकलिटी को बेहतर बनाने के लिए अक्सर स्वैग्ड प्रतिनिधित्व (मॉर्टन ऑर्डरिंग: http://en.wikipedia.org/wiki/Z-order_(curve ) देखें । इसका मतलब था कि इन आवश्यकताओं को बनाए रखने के लिए विषम आकारों के बनावट को गद्देदार किया जाएगा (आमतौर पर यह पैडिंग ड्राइवर द्वारा नियंत्रित की जाती है)। जबकि मॉर्टन-ऑर्डर आधुनिक gpus में आवश्यक रूप से उपयोग नहीं किया गया है, वहाँ अभी भी gpu की विशिष्ट आवश्यकताओं का समर्थन करने के लिए फूला हुआ हो सकता है।
आपकी बनावट के कई प्रतिनिधित्व किसी भी समय स्मृति में मौजूद हो सकते हैं, खासकर यदि आप उन पर ताले का उपयोग कर रहे हैं। यह आपकी मेमोरी के उपयोग को तब तक के लिए ख़राब कर सकता है जब तक कि प्रतिनिधित्व gpu द्वारा उपयोग नहीं किया जाता है (जो कि आमतौर पर CPU रेंडरिंग के पीछे कुछ फ्रेम होते हैं)
यदि आप मिपमैपिंग को सक्षम करते हैं, तो अतिरिक्त mips औसतन बेस मिल स्तर के एक तिहाई के आसपास खपत करेंगे। YMMV उपरोक्त कैविटीज़ के आधार पर।
AFAIK यह चित्र चौड़ाई * ऊंचाई * BPP, स्वतंत्र है अगर यह PNG, JPG या BMP है। मुझे नहीं पता कि डीडीएस या अन्य कंप्रेसेबल फॉर्मेट कैसे बनाए जाते हैं।
एमआईपी-मैपिंग से वीडियो मेमोरी की आवश्यकता बढ़ जाएगी।
इस विषय में मेरा ज्ञान थोड़ा पुराना हो सकता है। मैंने थोड़ी देर पहले 3D छोड़ दिया है।