मैं एनवीडिया 2 9 0.10 64 बिट ड्राइवरों का उपयोग करते हुए लिनक्स-आधारित सी ++ ओपनजीएल एप्लिकेशन पर काम कर रहा हूं। मैं अपनी मेमोरी पदचिह्न को कम करने की कोशिश कर रहा हूं क्योंकि यह काफी सारे लाइव डेटा का उपयोग करता है।libGL ढेर उपयोग
मैं ढेर के उपयोग का विश्लेषण करने के लिए वाल्ग्रिंड/मासफ का उपयोग कर रहा हूं, और जब यह मुझे विभिन्न चीजों को अनुकूलित करने में मदद करता है, अब तक उपयोग की जाने वाली ढेर मेमोरी का सबसे बड़ा हिस्सा libGL द्वारा आवंटित किया जाता है। इससे कोई फर्क नहीं पड़ता कि मैंने थ्रेसहोल्ड कैसे सेट किया है, मासफ मुझे विस्तार से देखने नहीं देता है, जहां उन आवंटन आते हैं, बस यह libGL है। चरम समय पर, मैं libGL द्वारा आवंटित लगभग 250 एमबी (900 एमबी कुल ढेर उपयोग से बाहर) देखता हूं। मैं ग्राफिक्स कार्ड पर समान मात्रा में स्मृति रखता हूं, वीबीओ और बनावट (ज्यादातर एक बड़ा 4096 * 4096 बनावट) के रूप में।
तो ऐसा लगता है कि जीपीयू मेमोरी में जो अपलोड किया गया है, वैसे ही स्मृति की एक समान राशि libGL द्वारा ढेर पर आवंटित की जाती है। वीबीओ की चोटी की मात्रा जब libGL आवंटन भी चोटी। क्या यह सामान्य है? मैंने सोचा कि बहुत सारी GPU मेमोरी होने के लाभों में से एक यह है कि यह रैम को मुक्त रखता है?
'glbufferData' में VBO के लिए आपने किस उपयोग को निर्दिष्ट किया था? – KillianDS
वीबीओ के थोक के लिए, यह GL_STATIC_DRAW है। एक मामले में यह GL_STREAM_DRAW है, लेकिन व्यवहार वही है भले ही एप्लिकेशन का यह हिस्सा अक्षम हो। – pholz
@ किलियनडीएस कोई फर्क नहीं पड़ता, क्योंकि उपयोग केवल एक संकेत है, अनिवार्य नहीं है। ओपनजीएल को विभिन्न कारणों से एक प्रतिलिपि रखना चाहिए। – datenwolf