2016-08-08 5 views
7

प्रश्न उठाते हैं: पिक्सल के एक ही राशि है, तो एक लंबी आयताकार बनावट की तुलना में एक वर्ग बनावट में संग्रहीत क्यों लेना है नाटकीय रूप से कम वीडियो स्मृति?ओपन: क्यों वर्ग बनावट कम स्मृति

उदाहरण: मैं glTexImage2D कमांड के साथ 360 4x16384 आकार गठन के निर्माण कर रहा हूँ। आंतरिक प्रारूप जीएल_आरजीबीए है। वीडियो मेमोरी: 1328 एमबी।

यदि मैं एक ही डेटा के साथ 360 256x256 बनावट बना रहा हूं, तो स्मृति उपयोग 100 एमबी से कम है।

एक एकीकृत इंटेल एचडी 4000 जीपीयू का उपयोग करना।

+0

मैं 100% निश्चित नहीं हूं लेकिन मुझे लगता है कि ओपनजीएल अपने ग्लिटेक्चर कॉल के साथ पिक्सेल डेटा को कैसे प्रबंधित करता है। जब छवियां वर्ग होती हैं तो मुझे लगता है कि इसे 2 की शक्ति के साथ करना है जब यह बैक बफर में डेटा को प्रतिपादन के लिए तैयार करने के लिए संग्रहीत करता है। –

+0

क्या आप मिपमैप्स उत्पन्न कर रहे हैं? मुझे लगता है कि आप नहीं करते हैं, लेकिन बस सुनिश्चित करने के लिए;) – Mars

+0

@ मर्स: आप सही हैं, सटीक भूल गए हैं कि मैं mipmaps का उपयोग नहीं कर रहा हूं। – Szak1

उत्तर

6

यह आयताकार होने के बारे में नहीं है। यह लगभग छोटे के आयामों में से एक है।

इष्टतम फैशन में बनावट से ग्रंथों का चयन करने के लिए, हार्डवेयर स्विजलिंग के रूप में जाना जाता है जो नियोजित करेगा। सामान्य विचार यह है कि यह बनावट में बाइट्स को पुन: स्थापित करेगा ताकि पिक्सेल जो 2 आयामों में पड़ोसी पड़ोसी भी स्मृति में पड़ोसियों के साथ होंगे। लेकिन ऐसा करने के लिए यह आवश्यक है कि बनावट दोनों आयामों में एक निश्चित न्यूनतम आकार का हो।

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

जो भी आप देख रहे हैं उसे देखते हुए, एक अच्छा मौका है कि इंटेल के स्विजलिंग हार्डवेयर का आकार 32 या 64 पिक्सल का न्यूनतम आकार है।

ओपनजीएल में, आप यहां जो कुछ भी किया है उसके अलावा इस असंगतता का पता लगाने के लिए आप इतना कुछ नहीं कर सकते हैं।

+0

धन्यवाद, ओपनजीएल में नया होने के नाते मुझे स्विजलिंग के बारे में पता नहीं था। वास्तव में, प्रत्येक बनावट के लिए 4x16384 आकार 32x16384 में वृद्धि करने से स्मृति उपयोग में वृद्धि नहीं हुई (पहली वृद्धि 64x16384 पर होती है)। इससे पता चलता है कि - जैसा कि आप सुझाव देते हैं - इंटेल चिपसेट के लिए ओपनजीएल कार्यान्वयन में कम से कम 32 पिक्सेल आवंटित होते हैं। मैंने आपके उत्तर को समाधान के रूप में चिह्नित किया है। – Szak1

+0

क्या एनएसइट जैसे कोई उपकरण नहीं हैं जो इसका पता लगा सकते हैं? – Zouch

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