मैं उपरोक्त पुस्तकों के बारे में कुछ नोट्स से सहमत हूँ:
OpenGL प्रोग्रामिंग 8 वीं गाइड अब बाहर हो गई है और इसे आधुनिक OpenGL 4.3 के लिए फिर से तैयार किया गया है।
SuperBible 5th एड, आपको शुरू करने के लिए एक बैसाखी पुस्तकालय प्रदान करेगा, लेकिन जैसा कि आप पुस्तक के माध्यम से जाते हैं, आप उस लाइब्रेरी की कार्यक्षमता को फिर से लागू करते हैं, इसलिए इसके अंत तक आपको पूरी तरह से वाकिफ होना चाहिए। अगर आप किसी ऑब्जेक्ट ओरिएंटेड भाषा का उपयोग कर रहे हैं तो मैं भी ओएनजीसी सामान को लपेटने की सलाह देता हूं। मैं मज़े के लिए अपनी खुद की लाइब्रेरी पर काम कर रहा हूं, जो जाने का रास्ता प्रतीत होता है, इसे लागू करते हुए मैं खुद को सभी इंस और बाहरी समझ लेता हूं और मुझे केवल उन बिट्स में डालने की आवश्यकता होती है जिन्हें मैं वास्तव में उपयोग करता हूं। इसके अलावा आप कुछ चीजों को सार कर सकते हैं जैसे कि डेटा को भेजना (shinyMaterial.setColor (Red) ज्यादा अच्छे) नहीं है), यह आपको विरासत विकल्प प्रदान करके कुछ सामानों को बैकपोर्ट कर सकता है। इसमें ऑग्लप्लस भी है ।
आधुनिक 'कोर' ओपनजीएल सीखने के साथ मुख्य समस्या यह है कि एक बुनियादी पाइपलाइन को प्राप्त करने और चलाने के लिए, भले ही यह सिर्फ एक क्यूब खींचने के लिए हो, जिसे आपको निम्नलिखित समझने की आवश्यकता है:
- मैट्रिक्स ऑपरेशन ( जीएलएम का उपयोग करें यदि आप सी ++ पर हैं, तो आपको यहां मैट्रिक्स मैट्रिक्स ओपनऑगिशियल एसडीके संस्करण की आवश्यकता होगी , या यहां मेरा सरल है ।)
- GLSL shader प्रोग्रामिंग।
- बाइंडिंग डेटा और वर्टेक्स बफर ऑब्जेक्ट्स के लिए डेटा। यदि आप केवल वास्तविक शुद्ध कोर प्रोफाइल सीखना चाहते हैं, तो उन्हें सभी को एक साथ लागू करने की आवश्यकता होगी और अगर कुछ भी टूट गया है तो आप कुछ भी नहीं देख पाएंगे और लगभग कोई सुराग नहीं है जहां यह गलत हो गया है। यह भी बुनियादी प्रकाश व्यवस्था (जहां आपको प्रोग्रामिंग भाषा के अलावा छायांकन एल्गोरिदम सीखने की जरूरत है) जैसी चीजों को कवर नहीं करता है।
लेकिन आपको मूल प्रोफ़ाइल के साथ निर्भरता में शुरू करने की आवश्यकता नहीं है। का प्रयोग करें कुछ शुरुआत में पदावनत कार्यक्षमता के लिए, बस सब कुछ के बारे में अभी भी यह समर्थन करेंगे, तो यह आधुनिकीकरण।
एक और मुद्दा यह है कि 'आधुनिक' ओपनजीएल वास्तव में 3 चीजों को संदर्भित कर सकता है:
पहले वाला प्रोग्रामर शेयर्ड पाइपलाइन है जो फिक्स्ड फंक्शन पाइपलाइन के विपरीत है। 2004 में OpenGL 2.0 के रिलीज़ होने के बाद से कोर 'आधुनिक' तकनीकें संभव हो गई हैं, जब शेयर्ड को पेश किया गया था (ट्यूटोरियल अभी अपडेट नहीं हुआ है) 1.5 में भी वर्टेक्स बफर ऑब्जेक्ट्स थे जो आधुनिक ओपनजीएल की एक और आधारशिला हैं। एक समस्या यह है कि आज भी OpenGL डेवलपर्स उन सभी सामानों का लाभ उठाने में सक्षम नहीं हो सकते हैं, उन इंटेल चिपसेट के साथ बहुत सारे भद्दे नेटबुक हैं जो केवल OpenGL 1.5 का समर्थन करते हैं और पुराने iPhones / Android वाले जैसे फोन जो केवल समर्थन करते हैं OpenGL ES 1.1। OpenGL 2.0 और OpenGL 3.x / 4.x में इस सामान के बीच एकमात्र वास्तविक अंतर अब कोर प्रोफाइल के लिए अनिवार्य है।
आधुनिक ओपनजीएल भी नए सामान को संदर्भित कर सकता है जो 3.x, 4.x में है। वर्टेक्स एरे ऑब्जेक्ट्स , फ्रेमबफ़र ऑब्जेक्ट्स , यूनिफ़ॉर्म बफर ऑब्जेक्ट्स / std140 , लेआउट क्वालिफायर , GLSL सबरूटीन्स जैसी चीजेंऔर इसी तरह। उनमें से कई मैंने पाया है कि चीजों को कार्यक्रम के लिए बहुत अच्छा बना सकते हैं। वे आपके समग्र इंजन पाइपलाइनों को भी सूक्ष्म रूप से बदल सकते हैं। वे ऐसी चीजें भी हैं जो थोड़े प्रयास से आप सहायक कार्य कर सकते हैं और इसी तरह (उदाहरण के लिए एक सामान्य शेकर प्रबंधक ऑब्जेक्ट लिखें जिसे आप वर्दी सेट करने के लिए उपयोग कर सकते हैं, यदि यूबीओ समर्थित उपयोग हैं अन्यथा मैन्युअल रूप से शेड को अपलोड करने का प्रबंधन करें) , हो सकता है कि इसे स्वचालित बनाने के लिए थोड़ा सा shader rewriting सामान वहां रखा जाए)। यह सामान केवल नए वीडियो कार्ड पर चलता है, आप किसी भी नेटबुक को इसका समर्थन करते हुए या किसी भी वर्तमान पीढ़ी के वीडियो गेम कंसोल को नहीं देख पाएंगे (वे ओपनजीएल ईएस के समान ओपनजीएल के अपने सबसेट का उपयोग करते हैं)। नवीनतम OSX में केवल 3 हैं।
अल्ट्रा मॉडर्न नेक्स्टजेन ओपनजीएल। OpenGL 4.3 अभी जारी किया गया था। यह कंप्यूट शेडर्स, ग्ल्टमालीड्राईवल्सइंडलाइंड और शेयर्ड स्टोरेज बफ़र्स के साथ आता है। यह एक मौलिक रूप से भिन्न पाइपलाइन के लिए अनुमति देता है, जहां आप GPU पर सभी शीर्ष डेटा अपलोड करते हैं और फिर गणना शेडर्स का उपयोग करके यह गणना करते हैं कि आपके प्रोग्राम में इसे करने के बजाय क्या खींचा जाना चाहिए। दुर्भाग्य से यह बहुत नया है इसलिए मुझे इस पर किसी भी अच्छे ट्यूटोरियल का पता नहीं है। OpenGL 4.3 की समीक्षा पर एक नज़र डालें जो यह बताता है कि यह कैसे काम करता है (लेखक यह भी कहता है कि एक GPU प्रो लेख है जो इसे समझाते हुए जारी किया जाएगा)। ब्रांड नया होने के नाते इस चरण में कहीं भी इसका समर्थन नहीं किया जाएगा (जब तक कि आप बीटा ड्राइवरों के साथ नए एनवीडिया कार्ड पर नहीं हैं)। हालाँकि आप इसके कुछ कार्यान्वयन के लिए OpenCL / CUDA का उपयोग करने में सक्षम हो सकते हैं।
मैं glBegin, glEnd, glVertex *, glNormal *, glTextCoord *, glTranslate *, glRotate *, glLoadIdenity, glModelViewMemrix इत्यादि छोड़ दूंगा। इसके बजाय वर्टेक्स बफर ऑब्जेक्ट्स को बिना शेड्स के सीखने के साथ शुरू करें, इस बिंदु पर 3 डी की कोशिश न करें, बस एक फ्लैट सफेद त्रिकोण ताकि आपको मैट्रीस का उपयोग करके 3 डी ऑपरेशन के साथ काम न करना पड़े (जैसा कि आपको उन्हें जल्द से जल्द बाइंड करने के लिए सीखना होगा। पुराने तरीके से सीखने का कोई मतलब नहीं)। अगले शेड में जोड़ें, आपको यह बदलना होगा कि आपकी शीर्ष बफ़र ऑब्जेक्ट्स कैसे बाध्य हैं क्योंकि अब आप वर्टेक्स विशेषताओं का उपयोग करना चाहते हैं। वर्दी के माध्यम से संपत्तियों को संप्रेषित करना सीखें। फिर GLM के साथ मैट्रिक्स ऑपरेशंस सीखें, मेट्रिसेस को शेड्स से बांधें और 3 डी चलें। एक बार जब आप ऐसा कर लेते हैं, तो यह मूल रूप से बनावट की तरह अधिक उन्नत चीजें सीख रहा है,
कुछ सामान्य ऑनलाइन आधुनिक ओपनजीएल ट्यूटोरियल, शेडर प्रोग्रामिंग पाइपलाइन को कवर करते हैं, जिनमें से अधिकांश ओपनजीएल 2.0+ के साथ काम करते हैं।
अन्य सामान्य शिक्षण संसाधनों के लिए। OpenGL ES एक अच्छा शुरुआती बिंदु हो सकता है। OpenGL ES ने सभी हटाए गए सामान को बाहर निकाल दिया है। OpenGL 4.1 में OpenGL ES के साथ पूर्ण संगतता है, इसलिए OpenGL ES कार्यक्रम को लेना और इसे OpenGL 4.1 में चलाना संभव होना चाहिए। और बुनियादी सिद्धांत दोनों के लिए समान हैं।
ध्यान देने योग्य कुछ बातें यह है कि OpenGL ES 3.0 अभी जारी किया गया है लेकिन जैसा कि यह नया है, इसमें अभी तक कोई ट्यूटोरियल या हार्डवेयर समर्थन नहीं होगा। यह कोई बड़ा मौलिक परिवर्तन नहीं लगता है (जैसे कि निश्चित पाइपलाइन और शेडर मॉडल के बीच का अंतर जो हमने ओपनजीएल ईएस 1.0-> 2.0 के साथ देखा था)। तो आप शायद किसी भी पुराने सामान को नहीं सीखेंगे।
इसके अलावा, OpenGL ES अक्सर ईजीएल का उपयोग करेगा ताकि आपको विंडो खोलने का एक और तरीका सीखने की आवश्यकता होगी लेकिन यह बहुत कठिन नहीं होना चाहिए। अन्यथा आसपास कुछ OpenGL ES रैपर / एमुलेटर हैं या आप Android / iPhone पर सीख सकते हैं यदि आपके पास एक है (या उनके एमुलेटर का उपयोग करके देखें)।
नहीं है एडिसन वेस्ले ओपन ES 2.0 प्रोग्रामिंग गाइड जो लाल किताब के बराबर है।
आप GLSL शेडर केंद्रित सामग्री को भी देख सकते हैं क्योंकि यह अधिकांश आधुनिक ओपनगेल रहता है। आपको बस यह सुनिश्चित करने की ज़रूरत है कि आप जो सीखते हैं, वह चीजों की ओपनगैल बाइंडिंग 'ग्लू' साइड को कवर करता है।
OpenGL छायांकन भाषा 2 संस्करण (ऑरेंज बुक) देखें।
OpenGL 4.0 शेडिंग लैंग्वेज कुकबुक में कुछ और ब्लीडिंग एज OpenGL सामान शामिल हैं, लेकिन यह स्वयं एक व्यापक ट्यूटोरियल नहीं है। यह निश्चित रूप से नवीनतम वास्तविक दुनिया में कुछ समझ प्राप्त करने के लिए एक नज़र के लायक है जैसे यूनिफ़ॉर्म बफर ऑब्जेक्ट और जीएलएसएल सबरूटीन।
अंत में आप WebGL पर एक नज़र डाल सकते हैं, हालांकि जावास्क्रिप्ट में होने के नाते जो डिबग करने के लिए कुछ अलग और बहुत कठिन होने वाला है।