mh01 के उत्तर में बहुत सारी मूल बातें शामिल हैं, इसलिए मैं कुछ अभिलेखन जोड़ने जा रहा हूँ।
OpenGL ES
चलिए ES 2.0 बनाम डेस्कटॉप GL 2.1 बनाम डेस्कटॉप GL 3.3 के बारे में बात करते हैं। इस चर्चा के उद्देश्य के लिए, "GL XY" शब्द डेस्कटॉप ओपनलॉग संस्करण XY को संदर्भित करेगा, जबकि "ES XY", OpenGL ES XY को संदर्भित करेगा।
संरचनात्मक रूप से , ES 2.0 में कोर GL 3.3 के साथ सामान्य से अधिक है जो GL 2.1 के साथ है। जीएल 3.3 और ईएस 2.0 दोनों शुद्ध-शैडर आधारित हैं। वे दोनों शुद्ध बफर-वस्तु आधारित हैं। आदि जीएल 2.1 में कई प्रदर्शन और कोडिंग जाल हैं जो एक जीएल 2.1 ऐप लिखना आसान बना देगा जो आसानी से ईएस 2.0 के लिए पोर्टेबल नहीं होगा।
हालाँकि, भाषा वाक्य रचना के संदर्भ में , GLSL ES 1.00 (ES 2.0 के लिए मैपिंग) GL 3.3 की तुलना में GL 2.1 की GLSL की तरह अधिक दिखता है। attributeऔर varyingकीवर्ड 3.3 कोर में मौजूद नहीं है; यह उपयोग करता है inऔर out, जो 2 से अधिक shader चरणों के साथ काम कर रहा है, जो बहुत अधिक सुसंगत और उचित है (यही कारण है कि ES 3.0 ने GL 3.3 सिंटैक्स को अपनाया)।
जीएल 3.3 से ईएस 2.0 में सीखी गई अवधारणाओं को मैप करना आसान है । इसलिए यदि आप ऐसा करने के लिए विभिन्न उपकरणों में से किसी के लिए जीएल 3.3 सीखते हैं, तो आप समझेंगे कि ईएस 2.0 दुनिया में कैसे काम करना है। आपको यह पता लगाना होगा कि सबसेट कहाँ है, निश्चित रूप से (यानी: जो चीजें जीएल 3.3 कर सकती हैं, वह ईएस 2.0 नहीं कर सकती), लेकिन अवधारणाएं समान हैं।
GLSL के सिंटैक्स को मैप करना, ताकि आप एक से दूसरे में शेड्स कॉपी कर सकें, थोड़ा कठिन है। लेकिन वास्तव में, यह सही जगह पर कुछ #defines है। इसके अलावा, GLSL 3.30 में कुछ ES संगतता विशेषताएं हैं, जैसे highpऔर इसके आगे (जो डेस्कटॉप GLSL में कुछ भी नहीं करते हैं)।
इसलिए आप GL 2.1 के बजाय GL 3.3 से सीखते समय ES 2.0 के लिए कुछ हासिल करते हैं।