इसके लुक से अब प्रत्येक ग्लसेट को इसके अंदर glBind (कुछ) को शामिल करना है
बिल्कुल नहीं। जैसा कि नीचे कई पैराग्राफ में वर्णित है, यह दूसरा तरीका है।
भले ही यह सच था, याद रखें कि क्लाइंट ऐप से जीएल सर्वर (उर्फ ड्राइवर) के लिए जीएल कमांड एक नियमित फ़ंक्शन कॉल की तुलना में बहुत अधिक प्रेषण उपरि है। यहां तक कि अगर हम मानते हैं कि डीएसए फ़ंक्शन मौजूदा कार्यों के आसपास केवल रैपर हैं, तो वे वे रैपर हैं जो जीएल सर्वर के अंदर रहते हैं और इसलिए कम ओवरहेड हो सकते हैं।
यदि OpenGL अभी भी एक स्टेट-मशीन है तो किसी एक चीज पर लागू स्ट्रीम परिवर्तन का लाभ नहीं उठा सकता है।
GPU राज्य मशीनें नहीं हैं। जीएल स्टेट मशीन इंटरफ़ेस एक एमुलेशन है जो डीएसए-जैसे ड्राइवर इंटर्नल को लपेटता है, न कि दूसरे तरीके से।
रैपिंग की एक परत को हटाने - एक परत जिसे जीएल सर्वर में अत्यधिक संख्या में कॉल की आवश्यकता होती है - स्पष्ट रूप से एक जीत है, भले ही एक छोटा हो।
कई थ्रेड्स के साथ काम करते समय राज्य मशीन दृष्टिकोण भी एक टन का अर्थ नहीं करता है; GL इस उपयोग के मामले में अभी भी भयानक है, लेकिन ड्राइवर अक्सर पर्दे के पीछे धागे का उपयोग करते हैं, और एक राज्य मशीन को चीजों को मज़बूती से काम करने के लिए थ्रेड सिंक्रोनाइज़ेशन या वास्तव में फैंसी समानांतर एल्गोरिदम / निर्माण की आवश्यकता होती है।
डीएसए एक्सटेंशन राज्य के परिवर्तनों के संदर्भ में अपने संचालन को वाक्यांशित करना जारी रखता है क्योंकि यह सब है, एक मौजूदा राज्य-आधारित दस्तावेज़ का विस्तार और पूरी तरह से नया एपीआई नहीं है, इसलिए इसे मौजूदा जीएल विनिर्देश में प्लग करने के लिए तैयार रहना होगा दस्तावेज़ की भाषा और शब्दावली। भले ही वह मौजूदा भाषा आधुनिक ग्राफिक्स हार्डवेयर एपीआई के रूप में अपनी नौकरी के लिए बहुत अनुकूल है।
कृपया नए डीएसए के पीछे के कारण और फायदे बताएं।
सबसे बड़ा तर्क यह है कि पुराना तरीका एक दर्द था। इसने एक साथ पुस्तकालयों की रचना करना बहुत मुश्किल बना दिया जो प्रत्येक को संशोधित कर सकता है या जीएल राज्य पर निर्भर कर सकता है। अपनी गहरी प्रक्रियात्मक राज्य प्रबंधन जड़ों के कारण किसी ऑब्जेक्ट-ओरिएंटेड या कार्यात्मक शैली में जीएल एपीआई को कुशलतापूर्वक लपेटना मुश्किल हो गया, जिसने विभिन्न गैर-सी भाषाओं में एपीआई को लपेटना मुश्किल बना दिया और कुशल ग्राफिक्स डिवाइस रैपर प्रदान करना भी मुश्किल बना दिया। Direct3D से वह सार OpenGL
दूसरा प्रक्रियात्मक राज्य-मशीन एपीआई ओवरहेड था, जैसा कि पहले वर्णित है।
तीसरा, डीएसए फ़ंक्शंस ने शब्दार्थ को बदल दिया, जहां पुराने एपीआई से उपयुक्त हैं जो बेहतर दक्षता के लिए अनुमति देते हैं। उदाहरण के लिए, जो चीजें पहले परस्पर थीं, उन्हें अपरिवर्तनीय बना दिया गया था, जो जीएल सर्वर से बहुत सारे बुक-कीपिंग कोड को हटा देता है। एप्लिकेशन द्वारा कॉल को हार्डवेयर में भेजा जा सकता है या जल्द ही (या अधिक समानांतर फैशन में) मान्य किया जा सकता है जब जीएल सर्वर को उत्परिवर्तित वस्तुओं से निपटना नहीं पड़ता है।
-
अतिरिक्त औचित्य और स्पष्टीकरण EXT_direct_state_access एक्सटेंशन विनिर्देश में दिया गया है ।
-
हार्डवेयर डिज़ाइन जो API डिज़ाइन के लिए प्रासंगिक हैं, बल्कि कई हैं।
याद रखें कि OpenGL 1991 की है। लक्ष्य हार्डवेयर उपभोक्ता-श्रेणी के ग्राफिक्स कार्ड नहीं थे (जो मौजूद नहीं थे) लेकिन बड़े CAD कार्यस्थान और पसंद करते हैं। उस युग के हार्डवेयर में आज की तुलना में बहुत अलग प्रदर्शन लिफाफे थे; मल्टी-थ्रेडिंग दुर्लभ था, मेमोरी बसें और सीपीयू में गति का अंतर कम था, और जीपीयू फिक्स्ड-फंक्शन त्रिकोण रेंडरिंग की तुलना में बहुत कम था।
अधिक से अधिक निश्चित-फ़ंक्शन सुविधाएँ जोड़ी गईं। विभिन्न प्रकाश मॉडल, बनावट मोड, आदि सभी को जोड़ा गया था, प्रत्येक को अपने स्वयं के टुकड़े की आवश्यकता थी। साधारण राज्य-आधारित दृष्टिकोण तब काम करता था जब आपके पास मुट्ठी भर राज्य थे। जैसे ही अधिक से अधिक राज्यों को जोड़ा गया, एपीआई तेजी से फटने लगे। एपीआई अधिक अजीब हो गया, लेकिन हार्डवेयर मोड से बहुत दूर नहीं गया, क्योंकि वे वास्तव में बहुत सारे राज्य स्विच पर आधारित थे।
फिर, प्रोग्रामेबल हार्डवेयर के साथ आया। हार्डवेयर अधिक से अधिक प्रोग्राम योग्य हो गया है, इस बिंदु पर जहां अब, हार्डवेयर थोड़ा राज्य, कुछ उपयोगकर्ता-आपूर्ति वाले प्रोग्राम और बहुत सारे बफ़र्स का समर्थन करता है। पिछले युग से उस सभी राज्य का अनुकरण किया जाना था, जिस तरह ड्राइवरों द्वारा उस युग की सभी निश्चित-कार्य विशेषताओं का अनुकरण किया जा रहा था।
हार्डवेयर भी अधिक से अधिक समानांतर हो गए। इसने अन्य हार्डवेयर रिडिजाइन की जरूरत पड़ी जो ग्राफिक्स स्थिति को बहुत महंगा बना दिया। हार्डवेयर अपरिवर्तनीय अवस्था के बड़े ब्लॉक में काम करता है। इन परिवर्तनों के कारण, ड्राइवर उपयोगकर्ता द्वारा तुरंत सेट किए गए प्रत्येक छोटे राज्य को लागू नहीं कर सकता है, लेकिन परिवर्तनों को स्वचालित रूप से बैचने और जब आवश्यक हो, उन्हें लागू करना होगा।
आधुनिक हार्डवेयर क्लासिक ओपन मॉडल से आगे भी संचालित होता है। डीएसए एक छोटा सा परिवर्तन है जो कुछ 10+ साल पहले की आवश्यकता थी (इसे मूल रूप से ओपनजीएल 3.0 के हिस्से के रूप में वादा किया गया था), जैसा कि डी 3 डी 10 ने किया था। OpenGL को प्रासंगिक बनाए रखने के लिए ऊपर दिए गए हार्डवेयर परिवर्तनों में से कई को सिर्फ DSA से अधिक की आवश्यकता होती है, यही वजह है कि अभी भी अधिक बड़े एक्सटेंशन हैं जो OpenGL मॉडल को काफी बदल देते हैं । फिर पूरे नए GLnext API प्लस D3D12, मेंटल, मेटल आदि हैं, जिनमें से एक भी नहीं है, जिससे आउटमोडेड स्टेट मशीन अमूर्त बनी रहती है।