2010-03-09 15 views
9

में glTexSubImage और glTexImage फ़ंक्शन के बीच अंतर दो कार्यों के बीच क्या अंतर है? कोई प्रदर्शन अंतर?ओपनजीएल

धन्यवाद ..

उत्तर

18

आप एक बनावट glTexImage का उपयोग कर बनाने के , और फिर अद्यतनglTexSubImage साथ इसकी सामग्री। जब आप बनावट को अपडेट करते हैं, तो आप पूरे बनावट को अपडेट कर सकते हैं, या बस इसके उप-आयत को अपडेट कर सकते हैं।

यह एक बनावट बनाने और इसे बनाने के लिए इसे अद्यतन करने के लिए कहीं अधिक कुशल है और इसे बार-बार हटाएं, इसलिए उस अर्थ में यदि आपके पास एक बनावट है जिसे आप अपडेट करना चाहते हैं, तो हमेशा glTexSubImage (प्रारंभिक सृजन के बाद) का उपयोग करें।

अन्य तकनीक बनावट अद्यतनों के लिए लागू हो सकती है। उदाहरण के लिए, अधिक जानकारी के लिए इस आलेख को texture streaming पर देखें।

(मूल रूप से, इस पोस्ट बनावट अद्यतन के लिए glMapBuffer का उपयोग कर सुझाव - नीचे चर्चा देखें।)

+0

+1, लेकिन मैं आपकी अंतिम वाक्य से सहमत नहीं हूं। आप आम तौर पर बनावट को मैप नहीं कर सकते हैं। वे गैर-रैखिक प्रारूप जीपीयू-पक्ष में वैसे भी संग्रहित होते हैं। इसलिए ... यदि आप SubTexture को कॉल करने से पहले अपलोड (एक बफर ऑब्जेक्ट में) करते हैं, तो आप कार्ड पर कॉपी/स्विजल करने के लिए GPU को मजबूर करते हैं। जरूरी नहीं कि एक नेट जीत। – Bahbar

+0

@ बाहबर यह बहुत दिलचस्प है। तो मुख्य स्मृति में छवि डेटा से बनावट को अद्यतन करने का सबसे तेज़ तरीका क्या है? बस 'glTexSubImage2D' को सीधे कॉल करें? आईआईआरसी यह मेरी पुस्तकों में से एक थी जिसने डीएमए हस्तांतरण करने के लिए 'ग्लैम्पबफर' की सिफारिश की थी। – gavinb

+0

मैंने सोचा कि आपने glTexImage के साथ बनावट बनाई है, gltexSubImage नहीं। – genpfault

1

"उप" नाम के साथ जीएल कार्यों बिजली के- 2 आयामों तक सीमित नहीं हैं। जैसा कि गैविनब इंगित करता है, आपको समग्र आयामों को सेट करने के लिए एक बार गैर-उप-संस्करण का उपयोग करने की आवश्यकता है, लेकिन मैं इस बात से सहमत नहीं हूं कि गैर-उप-संस्करण को बार-बार कॉल करना अपडेट के लिए "उप" का उपयोग करने से धीमा है - GPU है जब तक आप एक ही बनावट आईडी का उपयोग कर रहे हों तब तक मौजूदा बनावट को तब तक ओवरराइट करने के लिए स्वतंत्र है।

+0

अच्छा, यह _can_ है, लेकिन यह होगा? कम से कम, यह सत्यापित करने की आवश्यकता है कि TexImage के सभी पैरामीटर अभी भी पिछले लोगों के साथ संगत हैं, यह जानने के लिए कि आवंटन अभी भी उचित है या नहीं। इसे इंगित करें, यह सबटेक्चर के लिए सवाल नहीं है। इसके अलावा, दो की शक्ति बेहद प्रासंगिक नहीं है, क्योंकि अब जीएल में एनपीओटी बनावट का समर्थन करने की आवश्यकता है। – Bahbar