आधुनिक ओपनजीएल (3.0 या बाद के) सीखने के लिए अच्छे संसाधन? [बन्द है]


73

मैं ओपनजीएल (3.0 या बाद) के साथ शुरू करने के लिए एक अच्छे संसाधन की खोज पर ठोकर खाता हूं। खैर, मुझे बहुत सारी किताबें मिलीं लेकिन उनमें से कोई भी एक अच्छा संसाधन नहीं माना जा सकता है!

यहाँ दो उदाहरण हैं:

OpenGL प्रोग्रामिंग गाइड (7 वां संस्करण) http://www.amazon.com/exec/obidos/ASIN/0321552628/khongrou-20 यह अपूरणीय सामग्री से भरा है! लगभग हर अध्याय उस बारे में एक नोट के साथ शुरू होता है।

ओपनजीएल शानदार (5 वां संस्करण) http://www.amazon.com/exec/obidos/ASIN/0321712617/khongrou-20 इस पुस्तक में मुख्य तर्क समझाने के लिए लेखक द्वारा बनाई गई लाइब्रेरी का उपयोग किया गया है, जिसे आप सीखना चाहते हैं! मैं अपने पुस्तकालय का उपयोग करने के लिए सीखना नहीं चाहता! मैं OpenGL सीखना चाहता हूँ!

मुझे आशा है कि आप समझते हैं कि यह वही प्रश्न नहीं है जैसे "अरे मैं Google का उपयोग करने में सक्षम नहीं हूं ... मुझे बताएं कि ओपनगेल कैसे सीखें"। मैंने अभी एक पूर्ण और गहरी खोज पूरी कर ली है, लेकिन मैं "नया" ओपनजीएल को हटाए गए विषयों से बचने के लिए एक अच्छा और पूर्ण संसाधन नहीं खोज सकता।

क्या कोई मुझे सही दिशा में ले जा सकता है? मैं जानता हूँ कि C ++ और मुझे विकास में 10 साल का अनुभव है ... जहाँ मुझे एक अच्छा संसाधन मिल सकता है ?! मैं इस पर समय बिताना चाहता हूं और मैं गहराई से सीखना चाहता हूं।

जवाबों:


69

मैं उपरोक्त पुस्तकों के बारे में कुछ नोट्स से सहमत हूँ:

  • 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 पर एक नज़र डाल सकते हैं, हालांकि जावास्क्रिप्ट में होने के नाते जो डिबग करने के लिए कुछ अलग और बहुत कठिन होने वाला है।


3
+1, वाह। एकमात्र छोटा बदलाव जो मैं सुझाता हूं वह शुरुआत में क्लाइंट-साइड वर्टेक्स एरियर्स का उपयोग करना होगा क्योंकि वे वीबीओ के लिए एक आसान रास्ता हैं, लेकिन कुछ भालू जाल के बिना जो शुरुआती में गिर सकते हैं।
मैक्सिमस मिनिमस

1
मुझे लगा कि विशेष रूप से अधिगम / अवक्षेपित कार्यक्षमता का उपयोग करने से बचने के लिए सबसे अच्छा है क्योंकि यह सामान होगा जो कि अनजान होना होगा। मेरे द्वारा उपयोग की जाने वाली अन्य पदावनत चीजें ऐसी चीजें हैं जो ओपनगैल डिफ़ॉल्ट रूप से करेंगी, जैसे कि एक shader का उपयोग किए बिना रेंडर करने में सक्षम होना और वर्टेक्स विशेषता 0 मान लेना यह वह स्थिति है, जिसमें कोर प्रोफाइल पर स्विच करते समय विस्फोट होना चाहिए।
डेविड सी। बिशप

2
सुपरबेल का 6 वां संस्करण अभी जारी किया गया है और यह 5 वें संस्करण की तुलना में बेहतर है। मैं अत्यधिक, अत्यधिक इसकी सलाह देता हूं, इसके साथ आधुनिक ओपनजीएल का पालन करना और सीखना आसान है।
फिलिप

2
आर्कसिंथेसिस ग्लटुट साइट अब उपलब्ध नहीं है, लेकिन ट्यूटोरियल अभी भी bitbucket.org/alfonse/gltut/wiki/Home
Arto Bendiken

15

प्रोग्रामिंग गाइड के 8 वें संस्करण के बाहर आने तक कम से कम पुस्तकों के बारे में भूल जाएं।

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


11

मैं आपके जैसी ही स्थिति में रहा हूं और आखिरकार मुझे वह मिल गया है जिसकी मुझे जरूरत थी।

सबसे पहले सिर यहाँ: http://www.arcsynthesis.org/gltut/ । यह साइट शानदार है, अच्छे काम के उदाहरण हैं और जो चल रहा है उसकी गहरी व्याख्या। भले ही कोड C ++ में लिखा गया हो लेकिन मैं इसका उपयोग लिस्प में डेमो खोलकर लिखना सिखा रहा हूं। यह चीजों को करने के पुराने तरीके से पूरी तरह से मुक्त है ताकि आपको बुरी आदतों को उठाने के बारे में चिंता करने की ज़रूरत न हो।

मैं इस बात पर जोर दूंगा कि भले ही इसकी 'सिर्फ एक और वेबसाइट ’मुझे ऐसी कोई किताब नहीं मिली है जो मूल के बारे में सफाई और संक्षिप्त विवरण देती हो।

एक बार जब आप ऊपर की साइट के माध्यम से प्राप्त कर लेते हैं, तो आपके पास पहले से ही shaders का एक मूल समझ होगा और आपको जो कुछ भी जानना होगा, उसे अब googled किया जा सकता है (opengl es या वेबलॉग संसाधनों पर अच्छी नज़र डालें क्योंकि वे सभी हटाए गए सामान को हटा देते हैं) या opengl विकी साइट में पाया गया। यदि आप अपने बेल्ट के तहत आर्सेनथेसिस साइट से बुनियादी बातों को नहीं समझते हैं, लेकिन काफी मददगार हैं, जब आप मोटे तौर पर जानते हैं कि आप क्या देख रहे हैं, तो बाद में बुरी तरह से गुप्त है।

इसके अलावा GLSL में वास्तव में गहरे देखने के लिए एक गाँठ है: OpenGL Shader Language (द ऑरेंज बुक) मैं इस पर बहुत धीरे-धीरे काम कर रहा हूं, लेकिन आपको आगे बढ़ने के लिए आपको यह लिखने की समझ मिलेगी। मैं आपको चेतावनी देता हूं कि यह पुस्तक एक समीक्षक के शब्दों में, "200 पृष्ठ की शीर्ष गुणवत्ता वाली सामग्री 600 पृष्ठ की पुस्तक में पैक की गई है" लेकिन अतिरिक्त इतिहास और जानकारी आपको उन संदर्भों को समझने के लिए आवश्यक मार्ग प्रदान कर सकती है, जिन्हें ओपनजीएल एक मानक के रूप में नीचे चला गया है (अच्छी तरह से यह मुझे वैसे भी मदद कर रहा है!)

मुझे आशा है कि यह मदद करता है और शुभकामनाएं, मैं भविष्य में आपके काम को देखने / खेलने के लिए तत्पर हूं!

अपडेट करें

ऐसा लगता है कि आर्कसिंथेसिस दुखद रूप से ऑफ़लाइन है, हालांकि साइट को यहां पीडीएफ में बदल दिया गया है और कोड को यहां पर प्रतिबिंबित किया गया है

इसके अलावा कुछ वर्षों में मेरा मूल उत्तर learnopengl.com/ बिल्कुल शानदार हो गया है। जबकि मैं अभी भी आधुनिक ओपेंग्ल के लिए अपने परिचय की कच्ची उत्कृष्टता के लिए आर्सेनथेसिस की सलाह देता हूं, वहीं लर्नोपेंगल साइट में और भी बहुत कुछ शामिल है जो आर्किस्टीसिस ने किया था, और इसे अपूरणीय भाषा के साथ प्रबंधित करता है, हमने उदाहरण और ओपन कोड कोड तैयार किए हैं। असल में, यह बहुत अच्छा है, इसे देखें!

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


2
हे भगवान! पहली कड़ी शानदार है!
मटेरियोसेल

Gltut साइट अब उपलब्ध नहीं है, लेकिन ट्यूटोरियल अभी भी bitbucket.org/alfonse/gltut/wiki/Home
Arto Bendiken

अच्छी बात है, मैं अपनी पोस्ट को अतिरिक्त सिफारिशों के साथ अपडेट करूंगा।
बागर्स


5

मेरे लिए बहुत उपयोगी दो साइटें हैं: http://www.arcsynthesis.org/gltut/ और http://ogldev.atspace.uk/

इसके अलावा, OpenGL विकी एक बहुत अच्छा और अद्यतित संसाधन है।

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


हां, मुझे लगता है कि अधिकांश पुस्तकों की तुलना में ऑनलाइन ट्यूटोरियल अधिक उपयोगी हैं। सुपरबेल 5 वां संस्करण बेहद निराशाजनक है।
फिलिप

ग्लटुट साइट अब उपलब्ध नहीं है, लेकिन ट्यूटोरियल अभी भी bitbucket.org/alfonse/gltut/wiki/Home
Arto Bendiken

4

"आधुनिक" ओपन कवर में आई सबसे अच्छी किताब http://www.packtpub.com/opengl-4-0-shading-language-cookbook/book है

भले ही यह एक "रसोई की किताब" है, यह आपको रेंडर करने के लिए आवश्यक चरणों के माध्यम से चलता है और आपको किस तरह के साथी पुस्तकालयों की आवश्यकता होगी (छवि लिबास, वेक्टर गणित लिब)।

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

मैं नारंगी किताब लेने की भी सलाह देता हूं।


शुक्रिया @ जरी। क्या यह केवल "shader" के बारे में नहीं है? मेरा मतलब है, क्या यह पुस्तक ओपनग्ल तकनीक के साथ-साथ शेड्स से भी परिचय कराती है?
मटेरिगोएल

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

4

कुछ और ट्यूटोरियल और सामान जिनका उल्लेख नहीं किया गया था, लेकिन सहायक थे


+1 सूची में जोड़ने के लिए, अक्स द्वारा ओपनगैल ट्यूटोरियल है जो बहुत संरचित नहीं है लेकिन चीजों को स्थापित करने के लिए पर्याप्त जानकारी है।
लीजेंड 2k
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.