2009-08-02 19 views
5

ओपनजीएल 3.0 और 3.1 ने मुझे कुछ आवश्यक विशेषताओं को हटा दिया है। विशेष रूप से, शेडर्स में निश्चित फ़ंक्शन का उपयोग।ओपनजीएल: बहिष्करण के साथ क्या सौदा है?

क्या कोई यह समझा सकता है कि वास्तव में इसका क्या सौदा है?

उन्हें ऐसी उपयोगी सुविधा को बहिष्कृत करने की आवश्यकता क्यों मिलती है जो इसका स्पष्ट उपयोग करता है और कोई भी सनी हार्डवेयर कंपनी समर्थन को हटाने जा रही है?

उत्तर

6

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

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

1

फिक्स्ड फ़ंक्शन शेडर्स को मानक जीएलएसएल शेडर्स के साथ आसानी से बदल दिया जाता है, इसलिए यह देखना मुश्किल है कि तर्कसंगत रूप से उन्हें बहिष्कृत क्यों नहीं किया जाना चाहिए।

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

दरअसल मैं leaner OpenGL ES कार्यान्वयन अगले कुछ वर्षों में काफी व्यापक रूप से मानक ओपन को बदलने के लिए उम्मीद थी, और एफएफ कार्यक्षमता अधिक गायब हो जाते हैं, क्योंकि अधिकांश हार्डवेयर OpenGL ES बजाय लागू करेगा, क्योंकि यह पूर्ण ओपन लागू करने हार्डवेयर से निकाल दिया है हो सकता है

2

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

ध्यान दें कि किसी भी मौजूदा कार्ड में वास्तव में कोई एफएफ हार्डवेयर नहीं है खंड अब और - वे केवल शेडर्स चलाते हैं। जब आप एफएफ व्यवहार के लिए पूछना, जीएल क्रम आपकी ओर से shaders संलेखन है ..

+0

"जीएल रनटाइम आपकी ओर से शेडर्स को संलेखित कर रहा है।" .... क्या आपके पास इसके लिए कोई संदर्भ है? – shoosh

+0

मेरे सिर के ऊपर से नहीं। आईएचवी चालक लोगों के साथ बस बातचीत। –

+0

यह भी देखें: http://developer.nvidia.com/object/opengl_driver.html – Stringer

2

क्यों वे कहते हैं कि इसके स्पष्ट हर कोई उपयोग करता है और यह है कि कोई समझदार हार्डवेयर कंपनी को दूर करने के लिए जा रहा है इस तरह के उपयोगी सुविधा का बहिष्कार करने की आवश्यकता पर मिल रहा है के लिए समर्थन?

मैं, मान लीजिए तो एप्पल पागल होना चाहिए, क्योंकि MacOSX 10.7 केवल 3.2 कोर का समर्थन करता है। कोई संगतता विनिर्देश समर्थन नहीं, कोई ARB_compatibility एक्सटेंशन नहीं, कुछ भी नहीं। आप या तो 2.1 संदर्भ या 3.2 कोर संदर्भ बना सकते हैं।

हालांकि

, यदि आप कारणों हैं:

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

  2. यह क्या एक चाहिए का उपयोग करने की का एक मजबूत संकेत के रूप में कार्य करता है। यहां तक ​​कि यदि संगतता संदर्भ हमेशा उपलब्ध होता है, तो आप यह देखने के लिए कोर ओपनजीएल देख सकते हैं कि किसी को समस्या हल करने के लिए कैसे आना चाहिए।

  3. यह अंतिम डेस्कटॉप जीएल और जीएल ES एकीकरण को और अधिक उचित बनाता है। ईएस 2.0 ने पुरानी चीजों को फेंक दिया और कोर जीएल 2.1 के रूप में आप जो सोच सकते हैं उसे अपनाया। अंतिम लक्ष्य केवल एक ओपनजीएल होगा। ऐसा करने के लिए, आपको सभी क्रॉफ्ट के डेस्कटॉप जीएल से छुटकारा पाने में सक्षम होना चाहिए।

0

ओपनजीएल एक 'कोर' प्रोफ़ाइल और 'compatibly' प्रोफ़ाइल दोनों के लिए अनुमति देता है। इसलिए अधिकांश प्रणालियों के लिए आप बहिष्कृत या हटाए गए कार्यों तक किसी भी प्रकार की पहुंच को खो नहीं सकते हैं।

लेकिन यदि आप संगत रूप से सुनिश्चित करना चाहते हैं तो मूल सामग्री से चिपकना सबसे अच्छा है। आपको एक संगतता प्रोफ़ाइल की गारंटी नहीं दी जाएगी (भले ही अधिकांश हार्डवेयर में एक है और वर्तमान स्थिति में यह अधिक संभावना है कि आप केवल कोर की बजाय ओपनजीएल की तारीख का सामना करेंगे)। ओपनजीएल ईएस अब ओपनजीएल का सबसेट है, ओपनजीएल ईएस 2.x/3.x प्रोग्राम लिखना संभव है और इसे ओपनजीएल 4.3 में लगभग कोई बदलाव नहीं है।

प्लेस्टेशन और निंटेंडो जैसे गेम कंसोल ओपनजीएल का उपयोग करने के बजाय अपने ग्राफिक्स पुस्तकालयों के साथ भेज दिया गया।

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

मुझे लगता है कि यह सुनिश्चित करना भी महत्वपूर्ण है कि डेवलपर्स को प्रोग्रामिंग के मौजूदा तरीके से अवगत कराया जाए। दशकों से लोगों को डिफ़ॉल्ट रूप से चीजों को करने का 'गलत' तरीका सिखाया गया है और कशेरुक बफर वस्तुओं को अतिरिक्त के रूप में पढ़ाया गया है।

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