2008-08-20 13 views
13

इस प्रश्न के संबंध में Using OpenGL extensions पर, इन एक्सटेंशन कार्यों का उद्देश्य क्या है? मैं उनका उपयोग क्यों करना चाहूंगा? इसके अलावा, क्या उनके उपयोग से जुड़े कोई ट्रेडऑफ या गॉथस हैं?ओपनजीएल एक्सटेंशन क्या हैं, और इनका उपयोग करने के लाभ/व्यापारिक क्या हैं?

उत्तर

20

ओपनजीएल मानक अलग-अलग विक्रेताओं को एक्सटेंशन के माध्यम से अतिरिक्त कार्यक्षमता प्रदान करने की अनुमति देता है क्योंकि नई तकनीक बनाई जाती है। एक्सटेंशन नए कार्यों और नए स्थिरांक पेश कर सकते हैं, और मौजूदा ओपनजीएल कार्यों पर प्रतिबंधों को आराम या हटा सकते हैं।

प्रत्येक विक्रेता के पास वर्णमाला संक्षेप है जिसका उपयोग उनके नए कार्यों और स्थिरांक नामकरण में किया जाता है। उदाहरण के लिए, एनवीआईडीआईए का संक्षेप (एनवी) का उपयोग उनके मालिकाना फ़ंक्शन glCombinerParameterfvNV() और उनके निरंतर GL_NORMAL_MAP_NV को परिभाषित करने में किया जाता है।

ऐसा हो सकता है कि एक से अधिक विक्रेता एक ही विस्तारित कार्यक्षमता को लागू करने के लिए सहमत हैं। उस स्थिति में, संक्षिप्त नाम EXT का उपयोग किया जाता है। यह और भी हो सकता है कि वास्तुकला समीक्षा बोर्ड विस्तार को "आशीर्वाद देता है"। इसके बाद इसे एक मानक विस्तार के रूप में जाना जाता है, और संक्षिप्त नाम एआरबी का उपयोग किया जाता है। पहला एआरबी एक्सटेंशन जीएल_एआरबी_मल्टीटेक्चर था, जो संस्करण 1.2.1 में पेश किया गया था। आधिकारिक विस्तार पदोन्नति पथ के बाद, मल्टीटेक्चरिंग अब वैकल्पिक रूप से लागू एआरबी एक्सटेंशन नहीं है, लेकिन संस्करण 1.3 के बाद से ओपनजीएल कोर एपीआई का हिस्सा रहा है।

एक एक्सटेंशन का उपयोग करने से पहले एक प्रोग्राम को अपनी उपलब्धता निर्धारित करना होगा, और उसके बाद विस्तार को परिभाषित करने वाले किसी भी नए कार्यों के लिए पॉइंटर्स प्राप्त करें। ऐसा करने के लिए तंत्र प्लेटफार्म-विशिष्ट है और जीएलईडब्ल्यू और जीएलईई जैसी पुस्तकालय प्रक्रिया को सरल बनाने के लिए मौजूद हैं।

6

ओपन एक्सटेंशनओपन विनिर्देश जोड़ी गई नई सुविधाओं रहे हैं, वे ओपन मानक निकाय द्वारा और विभिन्न ग्राफिक्स कार्ड विक्रेताओं द्वारा जोड़ा जाता है। ये प्रोग्रामर के संपर्क में नए फ़ंक्शन कॉल या चर के रूप में सामने आते हैं। ओपनजीएल विनिर्देशन के नए संस्करण के साथ नए कार्यक्षमता के प्रत्येक नए संस्करण और (आमतौर पर) में सभी पिछली कार्यक्षमता और एक्सटेंशन शामिल हैं।

ओपनजीएल एक्सटेंशन के साथ वास्तविक समस्या केवल विंडोज़ पर मौजूद है। माइक्रोसॉफ्ट ने ओपनजीएल v1.1 के बाद जारी किए गए किसी भी एक्सटेंशन का समर्थन नहीं किया है। ग्राफिक्स कार्ड विक्रेताओं ने हेडर फाइलों और पुस्तकालयों के माध्यम से इस कार्यक्षमता के अपने संस्करण को शिपिंग करके इसे पार किया। हालांकि, इसका उपयोग करके थोड़ा दर्दनाक हो सकता है जैसा कि आप शो से जुड़े सवाल हैं। लेकिन यह समस्या ज्यादातर GLEW की लोकप्रियता से दूर हो गई है, जो इसे आसानी से उपयोग में आसान पैकेज में लपेटने का ख्याल रखती है।

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

5

एक्सटेंशन सामान्य रूप से ओपनजीएल स्पेक के अगले संशोधन तक प्रतीक्षा किए बिना ओपनजीएल में नई कार्यक्षमता जोड़ने के लिए ग्राफिक्स कार्ड विक्रेताओं के लिए एक तरीका है। विभिन्न प्रकार के एक्सटेंशन हैं:

  1. विक्रेता एक्सटेंशन - केवल एक विक्रेता एक निश्चित प्रकार की कार्यक्षमता प्रदान करता है।
    • उदाहरण: NV_vertex_program
  2. multivendor विस्तार - कई विक्रेताओं को एक साथ मिल गया और कार्यक्षमता पर सहमत हुए हैं।
    • उदाहरण: EXT_vertex_program
  3. एआरबी विस्तार - ओपन वास्तुकला समीक्षा बोर्ड विस्तार आशीर्वाद दिया है। आपके पास उचित उम्मीद है कि इस प्रकार का एक्सटेंशन थोड़ी देर के लिए होगा।
    • उदाहरण: ARB_vertex_program

एक्सटेंशन इन सभी चरणों के माध्यम से जाने की जरूरत नहीं है। कभी-कभी एक विस्तार केवल एक विक्रेता द्वारा लागू किया जाता है, हार्डवेयर डिजाइन अलग-अलग तरीके से जाने से पहले और एक्सटेंशन को छोड़ दिया जाता है। अन्य बार, एक विस्तार से एआरबी की स्थिति तक एक विस्तार हो सकता है इससे पहले कि हर कोई फैसला करता है कि बेहतर तरीका है। (ARB_vertex_program दृष्टिकोण, उदाहरण के लिए, ARB_vertex_shader के उच्च स्तरीय छायांकन भाषा दृष्टिकोण के पक्ष में अलग किया गया था जब कोर ओपनजीएल स्पेक में शेडर्स रोल करने का समय आया था।) यहां तक ​​कि एआरबी एक्सटेंशन हमेशा के लिए नहीं रहते हैं; उदाहरण के लिए, आज मुझे ARB_matrix_palette की आवश्यकता नहीं है।

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

तुम सिर्फ रहे ओपन में शुरू हो रही है, मैं जांच कर रही करने की सलाह देते हैं:

  • ARB_vertex_buffer_object (कोने)
  • ARB_vertex_shader/ARB_fragment_shader/ARB_shader_objects/GLSL कल्पना (shaders)

अधिक उन्नत:

  • ARB/EXT_framebuffer_object (ऑफ-स्क्रीन प्रतिपादन)

यह सभी कार्यक्षमता है जो कोर में घुमाया गया है, लेकिन अलगाव में इसे देखना अच्छा हो सकता है ताकि आप इसकी सीमाओं के लिए बेहतर महसूस कर सकें। (कोर ओपनजीएल स्पेक पुराने रूप से पुराने के साथ मिश्रित होता है, इसलिए यदि आप तेज़ पथ पर रहना चाहते हैं, और विरासत से बचने और कभी-कभी सॉफ़्टवेयर पथों में लागू होना चाहते हैं तो यह बहुत महत्वपूर्ण हो सकता है।)

जो कुछ भी आप करते हैं, उसे बनाएं सुनिश्चित करें कि आपके द्वारा उपयोग किए जाने वाले एक्सटेंशन के लिए उचित चेक हैं, और आवश्यकतानुसार फ़ॉलबैक। भले ही आपके कार्ड में कोई विस्तार हो, लेकिन इस बात की कोई गारंटी नहीं है कि एक्सटेंशन किसी अन्य विक्रेता के कार्ड पर या उसी कार्ड के साथ किसी अन्य ऑपरेटिंग सिस्टम पर भी उपस्थित होगा।

संबंधित मुद्दे