2012-04-27 7 views
6

ओपनजीएल ईएस ओपनजीएल का सबसेट होने का दावा करता है, जो सैद्धांतिक रूप से किसी ओपनजीएल ईएस प्रोग्राम को पीसी पर नियमित ओपनजीएल के रूप में चलाया जा सकता है; हालांकि, ऐसा लगता है कि ओपनजीएल ईएस के कुछ कार्यों के लिए थोड़ा अलग नामकरण सम्मेलन हैं (glOrtho बनाम glOrthof)। क्या इससे कोई फर्क पड़ता है? क्या ओपनजीएल ईएस ऐप अभी भी ओपनजीएल जीपीयू/ड्राइवर के साथ बॉक्स के बाहर या केवल एक पुनर्मूल्यांकन के साथ काम कर सकता है?ओपनजीएल ईएसजीएल ईएस के साथ पिछड़ा संगत है?

उत्तर

9

क्या ओपनजीएल ईएस ऐप अभी भी ओपनजीएल जीपीयू/ड्राइवर के साथ बॉक्स के बाहर या केवल एक पुनर्मूल्यांकन के साथ काम कर सकता है?

सं किंडा, लेकिन जब से तुम ऊपर glOrtho लाया, जिसका अर्थ है आप, ES 1.x के बजाय 2.x के बारे में बात कर रहे हैं आप के लिए नहीं। ईएस 3.0 मिश्रण में कुछ नई चीजें जोड़ता है; विवरण के लिए नीचे देखें।

ओपनजीएल ES 1.x ओपनजीएल के किसी भी संस्करण का सबसेट नहीं है। वे कुछ बहुत महत्वपूर्ण अंतर हैं। आप, एक सामान्य सबसेट पर कोड करने में सक्षम हो सकते हैं, लेकिन आप इसे करने के लिए बहुत दूर फेंक देंगे। दोनों प्लेटफार्मों पर।

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

कहा जा रहा है कि, आप आमतौर पर एब्स्ट्रैक्शन के साथ एपीआई मतभेदों को दूर कर सकते हैं। ईएस 2.0 के साथ आप जिस बड़ी समस्या को चलाने जा रहे हैं वह जीएलएसएल है।

जीएलएसएल ईएस ने कई नए कीवर्ड, विशेष रूप से सटीक क्वालीफायर जोड़े। डेस्कटॉप जीएलएसएल 1.20 (जीएल 2.1 के साथ कौन से जोड़े) में वे कीवर्ड नहीं हैं। डेस्कटॉप जीएलएसएल 1.30 और अधिक करें, लेकिन वे जीएल 3.0 हार्डवेयर से बाध्य हैं। तो ईएस 2.0 के लिए एक शेडर लिखना मुश्किल है जो डेस्कटॉप जीएल 2.1 हार्डवेयर पर असम्बद्ध हो जाएगा।

यह निश्चित रूप से असंभव नहीं है। कुछ विवादास्पद # परिभाषाएं, जो अलग-अलग भाषाओं के लिए # ifdef'd हो सकती हैं, यह काफी सरल बना सकती हैं। लेकिन आपको अभी भी इन सभी मामलों को ढूंढना है।

हाल ही में जारी ओपनजीएल ईएस 3.0 ओपनजीएल 3.3 का उचित सबसेट नहीं है, लेकिन यह ईएस 2.0 की तुलना में काफी करीब है। वास्तव में महत्वपूर्ण बात यह है कि जीएलएसएल 3.30 लगभग जीएलएसएल ईएस 3.00 के समान है। तो आप दोनों के बीच शेडर्स को आसानी से बदल सकते हैं।

ईएस 3.0 में कुछ सीमाएं हैं जो 3.3 में नहीं हैं, लेकिन आम तौर पर ये आसानी से टालने योग्य होते हैं (और उनमें से अधिकांश का उपयोग करना भी बुरा व्यवहार है)। और ईएस 3.0 की कुछ विशेषताएं तकनीकी रूप से जीएल 3.3 में नहीं हैं, लेकिन वे जीएल 3.3 (जैसे एआरबी_टेक्स्ट_स्टोरेज) में आम तौर पर उपलब्ध कोर एक्सटेंशन में हैं, और संगतता बढ़ाने के लिए ES3_compatibility एक्सटेंशन है)। लेकिन अब यह काम करना बहुत आसान है कि glTexImage2D वास्तव में दोनों मामलों के बीच एक ही तरीके से काम करता है। अब, इंटरऑप कार्यक्षमता से बचने का एक मामला है जो दोनों के लिए उपलब्ध नहीं है।

4

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

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

ओपनजीएल वी 3 और वी 4 कई एनाक्रोनिस्टिक 2.x फीचर्स को हटा देता है, हालांकि प्रमुख ड्राइवर इस पुराने समर्थन को जारी रखने के लिए संगतता मोड बनाए रखते हैं।

ओपनजीएल 4.x में GL_ARB_ES2_compatibility extension पोर्टेबिलिटी को कम करने के लिए डेस्कटॉप और मोबाइल संस्करणों को एक साथ लाने में मदद करता है।

glOrtho बनाम glOrthof जैसे छोटे अंतर प्रबंधित करने के लिए स्पष्ट रूप से आसान हैं, लेकिन आपको अन्य सुविधाओं के लिए रैपर लिखने की आवश्यकता होगी।

+0

"ओपनजीएल (4.x) और ओपनजीएल ईएस (2.x) के वर्तमान संस्करण बहुत समान हैं, और काफी हद तक संगत" निश्चित रूप से वे हैं। यदि आप वास्तव में पोस्ट 2.1 सुविधाओं में से किसी का * उपयोग नहीं करते हैं। पूर्णांक बनावट की तरह, वर्दी बफर ऑब्जेक्ट्स, different_shader_objects, उन्नत शेडर्स (ज्यामिति और टेस्सेलेशन), मैं जा रहा हूं लेकिन मेरा बिंदु स्पष्ट है। वे केवल तभी समान होते हैं जब आप * अपने डेस्कटॉप जीएल कोड को अपंग करते हैं। –

+2

सुधार के लिए धन्यवाद। मैंने उपर्युक्त उपरोक्त अद्यतन किया, इसलिए मुझे उम्मीद है कि यह अभी है। मैंने भी आपका जवाब उड़ाया। – gavinb

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