मैं ओपनजीएल सीख रहा हूं और ध्यान दिया कि मेरे पास इनपुट गुणों से निपटने के दौरान glGetAttribLocation()
या glBindAttribLocation()
का उपयोग करने का विकल्प है, लेकिन वर्दी के लिए, मुझे glGetUniformLocation()
का उपयोग करना होगा। क्या एपीआई में glBindUniformLocation()
शामिल करने के लिए कोई तकनीकी कारण नहीं है?वर्दी चर के लिए समकक्ष कोई glbindAttribLocation() क्यों नहीं है?
उत्तर
स्टार्टर्स के लिए, वर्दी के मान को सेट करने के लिए glUniform* (...)
जैसे फ़ंक्शन को कॉल करने के अलावा, आप उनके साथ कोई अन्य चीज नहीं कर सकते हैं। जीएलएसएल से पहले वर्दी मौजूद नहीं थी।
ओपनजीएल में विशेषता स्थान GL_ARB_vertex_program
असेंबली भाषा पर वापस स्थान (जहां अट्रीब्स के नामों के बजाय संख्याएं थीं)। वास्तव में, जब यह पहली जीएल में जोड़ा गया था, उन सूचकांक पारंपरिक अचल समारोह संकेत के लिए उपनामित (जैसे == glVertexPointer (...)
, == glNormalPointer (...)
, == glColorPointer (...)
) ताकि शीर्ष कार्यक्रमों सका आसानी से मौजूदा अनुप्रयोगों में गिरा दिया जाना चाहिए। जीएलएसएल ने एपीआई के दो हिस्सों का पुन: उपयोग किया कि असेंबली भाषा एक्सटेंशन अग्रणी (यह बहुत होता है)।
यह उल्लेखनीय है कि जीएलएसएल में, केवल 1 उपनाम की अनुपालन में अनुमोदित/अनुमति है और (कई ड्राइवर, विशेष रूप से एनवी, इससे अधिक ऊर्फ)। फिक्स्ड-फ़ंक्शन और प्रोग्रामेबल वर्टेक्स विशेषताओं को मिलाकर मिलान करते समय, उन इंडेक्स से बचना महत्वपूर्ण है जो अन्य उपयोग किए गए पॉइंटर्स के लिए उपनाम करते हैं और इसके लिए स्थानों को मैन्युअल रूप से सेट करने की क्षमता की आवश्यकता होती है।
अधिक महत्वपूर्ण बात यह है कि जेनेरिक वर्टेक्स विशेषता स्थानों को स्पष्ट रूप से सेट करने की क्षमता जीएलएसएल कार्यक्रमों को कठोर रूप से परिभाषित डेटा को अधिक सुविधाजनक बनाने के लिए अनुकूल बनाती है। कशेरुक शेडर के अपेक्षित इंटरफ़ेस से मेल खाने के लिए वर्टेक्स पॉइंटर्स का एक अलग सेट सेट करने के बजाय, अपने कशेरुक डेटा के लेआउट से मेल खाने के लिए जीएलएसएल प्रोग्राम को संकलित/लिंक करना अक्सर आसान होता है।
यह व्यवहार वर्दी के लिए बहुत महत्वपूर्ण नहीं है, लेकिन फिर भी, वे Uniform Buffers के रूप में इसी तरह की सुविधा है। आप एक साझा करने योग्य स्थान (आपके चयन के) में वर्दी बफर बांध सकते हैं और अपने सभी जीएलएसएल कार्यक्रमों में अपने वर्दी ब्लॉक में सभी मानों का दोबारा उपयोग कर सकते हैं। वास्तव में, यह कार्यक्षमता मूल रूप से नाम के साथ विस्तार के रूप में पेश की गई थी: GL_EXT_bindable_uniform
- 1. GLES2 क्या glbindAttribLocation() आवश्यक है?
- 2. मुझे glbindAttribLocation का उपयोग क्यों करना चाहिए?
- 3. ग्रूवी रूबी के लिए समकक्ष समकक्ष और कोई भी
- 4. डेटटाइम के लिए कोई अंतर्निहित प्रकार क्यों नहीं है?
- 5. वर्दी ग्रे एक तटस्थ विस्थापन मैप क्यों नहीं है?
- 6. कोई समकक्ष। =
- 7. जावा में कोई स्थानीय स्थैतिक चर क्यों नहीं है?
- 8. क्या लिनक्स/यूनिक्स में फ़्यूटेक्स के लिए कोई समकक्ष है?
- 9. क्या जीसीसी में स्टडकॉल के लिए कोई समकक्ष है?
- 10. क्या svn: bugtraq गुणों के लिए कोई गिट समकक्ष है?
- 11. निम्न SQL क्वेरी क्यों समकक्ष नहीं हैं?
- 12. MySQL, खाली मूल्यों के लिए समकक्ष समकक्ष?
- 13. इस मानचित्र के लिए "कोई फ़ंक्शन नहीं है" क्यों है?
- 14. गिट - आरएम समकक्ष "एड।" के लिए समकक्ष?
- 15. इस अप्रयुक्त चर के लिए कोई चेतावनी क्यों नहीं दी गई है?
- 16. इनलाइन चर क्यों नहीं?
- 17. मैवेन आर्केटाइप के लिए समकक्ष समकक्ष?
- 18. जीएलएसएल/सी ++: वर्दी के Arrays?
- 19. कोई विदेशीऑटोडेलेट क्यों नहीं है?
- 20. चर के लिए वैरिएबल क्यों ठीक नहीं है लेकिन यह कार्यों के लिए ठीक है?
- 21. सी # के लिए "विस्तारित" के बराबर कोई समकक्ष?
- 22. यह समकक्ष प्रोग्राम संकलित क्यों नहीं करता है?
- 23. स्ट्रिंग के लिए कोई आदिम प्रकार क्यों नहीं है?
- 24. std :: सूची के लिए कोई ऑपरेटर [] क्यों नहीं है?
- 25. ब्रॉडकास्ट रिसीवर के लिए कोई टेस्ट इंस्ट्रूमेंटेशन क्यों नहीं है?
- 26. गणित कार्यों के लिए कोई स्थिर पुस्तकालय क्यों नहीं है?
- 27. ExceptT के लिए कोई MonadMask उदाहरण क्यों नहीं है?
- 28. लैम्बडा के लिए कोई फंक्शन-ट्राई-ब्लॉक क्यों नहीं है?
- 29. कंटेनर-प्रकारों के लिए कोई टाइपक्लास क्यों नहीं है?
- 30. std :: string के लिए कोई रिजर्व कन्स्ट्रक्टर क्यों नहीं है?