क्या सभी उपलब्ध बनावट इकाइयों का उपयोग करना अच्छा है?


9

एक जाल में कई बनावटों को लागू करते समय, जैसे कि बंप-मैपिंग के लिए, मैं आमतौर पर बनावट को पहले कुछ निश्चित बनावट इकाइयों से बांधता हूं, उदाहरण के लिए: diffuse = unit 0, bump = unit 1, specular = Unit 2, फिर प्रत्येक को पुन: उपयोग करते रहें। अलग बनावट के साथ अलग जाल। लेकिन मैंने हमेशा सोचा है कि glActiveTextureइतनी बनावट इकाइयों का समर्थन क्यों करता है (पिछले लिंक में, यह कम से कम 80 कहता है)।

इसलिए मेरे साथ यह हुआ कि बनावट को प्रबंधित करने का एक संभावित तरीका यह है कि प्रत्येक उपलब्ध इकाई के लिए अलग-अलग बनावटों को बाँध कर उन्हें सक्षम बनाया जाए, बस एक समान नमूना सूचकांक को अपडेट किया जाए। यह बनावट स्विच की संख्या को कम करके प्रतिपादन प्रतिपादन में सुधार करना चाहिए। यदि आपके पास अधिकतम बनावट इकाइयों की तुलना में कम बनावट है, तो आपको कभी किसी बनावट को खोलना नहीं है।

क्या यह मानक अभ्यास वास्तविक समय के ओपनजीएल अनुप्रयोगों पर है (मेरा मानना ​​है कि यह डी 3 डी पर भी लागू होता है)? और क्या इस दृष्टिकोण को लेने के कोई गैर-स्पष्ट प्रदर्शन निहितार्थ हैं? मेमोरी ओवरहेड शायद?

जवाबों:


11

आधुनिक हार्डवेयर में वास्तव में टेक्सटाइल बाइंडिंग पॉइंट्स की अवधारणा नहीं है जैसा कि ओपनजीएल द्वारा उजागर किया गया है। बल्कि, shader यूनिट एक डिस्क्रिप्टर (जो कि किसी प्रकार का वसा सूचक है) का उपयोग करता है जो संभावित रूप से किसी भी बनावट को तब तक संबोधित कर सकता है जब तक कि वह वीडियो मेमोरी में निवासी न हो। यह वह है जो बाइंडिंग टेक्सचर जैसी चीजों को संभव बनाता है। तो वर्तमान कार्यान्वयन में उपलब्ध "बनावट इकाइयों" की बड़ी मात्रा बस एपीआई के इस अब-अप्रासंगिक भाग को संभालने की कोशिश कर रही है।

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


मैंने उस प्रस्तुति को पहले देखा है, यह बहुत अच्छा है। मुझे नहीं पता था कि आप पहले पैराग्राफ में क्या उल्लेख करते हैं, हालांकि, उस जानकारी के लिए धन्यवाद!
Glampert
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.