कई चीजें हैं जिनसे आप सीख सकते हैं। ओपनग्लग के लिए किसी नए के परिप्रेक्ष्य से, यहां प्रत्येक पर मेरी सोच है।
OpenGL उदाहरण
वहाँ बहुत सारे उदाहरण कोड हैं जिन्हें आप पढ़ सकते हैं। जी-ट्रूक के उदाहरण बहुत व्यापक हैं और बहुत सारी उन्नत सुविधाओं को कवर करते हैं।
हालाँकि, यदि आप एक शुरुआती हैं, तो उदाहरणों से सीखना सीखने का एक भयानक तरीका है। कोड पढ़ना जो आप वास्तव में नहीं समझते हैं वह आपको यह नहीं सिखाएगा कि यह क्यों काम करता है। दरअसल, उपरोक्त लिंक पृष्ठ पर पाठ विशेष रूप से और सही रूप से बताता है कि उदाहरण शुरुआती के लिए नहीं हैं।
नंगे स्रोत कोड से सीखना, जब तक कि यह भारी टिप्पणी नहीं की जाती है (जिस बिंदु पर यह एक ट्यूटोरियल है) एक आसान बात नहीं है। ऐसा करने का प्रयास कार्गो पंथ-शैली की प्रोग्रामिंग और कॉपी-एंड-पेस्ट कोडिंग को प्रोत्साहित करता है। अपने आप को यह समझाना बहुत आसान है कि आप समझते हैं कि जब आप वास्तव में क्या कर रहे हैं तो कुछ काम करता है तो कोड को एक स्थान से दूसरे स्थान पर कॉपी करना है। आप चीजों को मिलाने और मिलान करने में सक्षम हो सकते हैं, लेकिन उचित निर्देशात्मक सामग्री के बिना सच्ची समझ हासिल करना मुश्किल है।
OpenGL Books
OpenGL के विकास के लिए उचित खरीद योग्य पुस्तकों की एक उचित संख्या है। मैं अपने विचारों को यहां दो सबसे बड़े हिस्से में शामिल करूंगा।
ओपन रेडबुक
यह एक विशुद्ध रूप से व्यावहारिक दृष्टिकोण से कुछ हद तक समस्याग्रस्त है। देखें, 7 वें संस्करण में जीएल 3.0 और 3.1 शामिल हैं। जो बल्कि पुराना है। वहाँ एक कर दिया गया है बहुत तब से ओपन करने के लिए जोड़ा उपयोगी सुविधाओं, सुविधाओं जो बदल कैसे आप चीजों को लिखते थे की। और उनमें से सभी हार्डवेयर विशेषताएं नहीं हैं।
8 वां संस्करण "जल्द" आ रहा है, और 4.1 को कवर करेगा। इसमें कोई शब्द नहीं है कि क्या यह पुराने फिक्स्ड-फंक्शन सामान को कवर करता है।
मैं कहूंगा कि यह पुस्तक ठीक है। इसके साथ सबसे बड़ी समस्या सूचना का संगठन है। यह सीखने के लिए बनाई गई पुस्तक की तुलना में व्यापक संदर्भ पुस्तिका की तरह है। यहाँ मेरा मतलब है।
सबसे महत्वपूर्ण चीजों में से एक जो शिक्षण के दौरान करना चाहिए, वह है छात्र को महत्वहीन जानकारी के साथ अधिभार न देना। लेकिन रेडबुक ठीक यही करता है। सामग्री की शुरुआत करते समय, यह बहुत सारी सामग्री का परिचय देता है । इसमें से अधिकांश हाथ में कार्य के लिए बहुत ही कम हैं।
आप किस बारे में बात करते हैं और जब आप इसके बारे में बात करते हैं तो आपकी पुस्तक को एक अच्छा सीखने का संसाधन बनाना महत्वपूर्ण होता है। Redbook कभी भी अधिक उपयुक्त समय तक जानकारी वापस नहीं रखता है। जब यह त्रिभुज और आदिम कैसे आकर्षित करने के बारे में बात करता है, यह सब कुछ के बारे में बात करता है, एक ही बार में। यह हर विकल्प, हर फ़ंक्शन, हर पैरामीटर आदि को कवर करता है।
यह सिर्फ सूचना का एक अच्छा संगठन नहीं है।
OpenGL शानदार
इस पुस्तक के पांचवें संस्करण में केवल कोर जीएल 3.x शामिल है, इसलिए कोई निश्चित कार्य नहीं है।
हालांकि, पुस्तक का सामान्य संगठन कमोबेश चौथे संस्करण के संस्करण के संगठन के समान है। यह असंभव लगता है क्योंकि 4 वें संस्करण ने फिक्स्ड-फंक्शन का उपयोग किया था और बहुत बाद तक शेड का परिचय नहीं दिया था।
जिस तरह से यह पूरा किया गया वह पुस्तक के बारे में मेरी # 1 शिकायत है। अनिवार्य रूप से, लेखक ने एक पुस्तकालय बनाया जो फिक्स्ड-फंक्शन ओपनजीएल का एक रूप लागू करता है। यह वीएओ, बफर ऑब्जेक्ट्स, शेड्स और कई अन्य चीजों को लपेटता है, ताकि वह ड्राइंग ऑब्जेक्ट्स, मैट्रिक्स गणित और टेक्सचर के बारे में बात कर सकें, बिना इस बारे में बात किए कि जीएल पाइपलाइन कैसे काम करता है।
इन सभी विवरणों को छिपाकर, यह सामग्री को पचाने में आसान बनाता है। लेकिन आप अक्सर लोगों को लाइब्रेरी के बिना वास्तव में काम करने का तरीका जाने बिना शानदार से दूर चलते हुए देखेंगे। वे वास्तव में यह नहीं समझते कि शेड्स बफर ऑब्जेक्ट्स से कैसे कनेक्ट होते हैं, डेटा पाइप लाइन से कैसे बहता है, आदि।
यह एक सेवा योग्य पुस्तक है, जो रेडबुक की तुलना में मोरसो है। यदि बाकी सब विफल हो जाता है, तो यह काम करेगा। लेकिन मुझे लगता है कि यह बेहतर हो सकता है।
इसके अलावा, कुछ समीक्षकों के अनुसार, यह कुछ उपयोगी जानकारी को याद करने लगता है, जैसे कि सामान्यीकृत मानों का उपयोग करके डेटा की पैकिंग करना और जैसे।
OpenGL ऑनलाइन सामग्री
कई ऑनलाइन सामग्रियां हैं जिनसे कोई भी सीख सकता है।
नेह के ट्यूटोरियल
नेह के ट्यूटोरियल , जैसा कि अन्य लोगों ने कहा है, बेहद पुराने हैं। वे फिक्स्ड-फंक्शन ओपनजीएल पर ध्यान केंद्रित करते हैं। यह अक्सर कहा जाता है कि फिक्स्ड-फंक्शन जीएल सीखना आसान है, जो सच है। लेकिन यह एक अच्छा विचार नहीं है।
यह समझना कि फिक्स्ड-फंक्शन पाइपलाइन वास्तव में कैसे काम करती है। मैं यह कहना चाहूंगा कि यह सीखने के लिए कठिन है। एक बार जब आप इसे प्राप्त करते हैं, तो शेड सरल होते हैं। बनावट पर्यावरण के सामान, कॉम्बीनेर्स और व्हाट्सन की पेचीदगियों को समझना, बहुत मुश्किल है और यह सुनिश्चित करने के लिए बार-बार विज़िट की आवश्यकता है कि डॉक्स को यह सुनिश्चित करने के लिए कि सब कुछ सही सेट है। यहां तक कि अगर आप सब कुछ सही ढंग से समझते हैं, तो एक छोटी सी गलती करना आसान है, जिससे सब कुछ टूट जाता है।
अंतर यह है कि आप इसे समझे बिना निर्धारित-कार्य कर सकते हैं । यह कार्गो पंथ प्रोग्रामिंग को प्रोत्साहित करता है। यह स्क्रीन पर कुछ प्राप्त करना संभव बनाता है बिना वास्तव में यह जानने के कि कोई क्या कर रहा है। OpenGL.org फ़ोरम में, हम निश्चित-फ़ंक्शन के आसपास के minutiae के बारे में लगातार सवाल देखते हैं, लोगों को पता नहीं है कि gluLookAt कैसे काम करता है, प्रकाश व्यवस्था के साथ कठिनाइयों के लिए, लोगों को बनावट पर्यावरण के साथ काम करने के लिए कुछ विशेष प्रभाव प्राप्त करने की कोशिश कर रहा है।
तो नहीं, मुझे नहीं लगता कि नेगले ओपनजीएल सीखने का एक अच्छा तरीका है।
उपरोक्त टिप्पणी किसी भी गैर-shader आधारित ट्यूटोरियल के लिए इस्तेमाल की जा सकती है, जैसे कि Swiftless , Lighthouse , और आगे।
विकीबूक का ओपनजीएल प्रोग्रामिंग
Wikibook OpenGL प्रोग्रामिंग शायद नेह के बराबर आधुनिक है। यह जीएल संस्करण 2.1 को कवर करता है, क्योंकि वे इसे मोबाइल प्लेटफार्मों के लिए प्रासंगिक रखना चाहते हैं। अगर यह आपके लिए महत्वपूर्ण है, तो हर तरह से यहां देखें।
नेह के साथ दूसरा मुद्दा, और इस तरह यह विकीबूक, स्रोत कोड पर बड़ा ध्यान केंद्रित है। कोड अनुपात का पाठ बहुत छोटा है; वहाँ एक है बहुत कुछ कोड की, लेकिन पाठ वास्तव में यह कैसे काम करता है सब की व्याख्या नहीं करता।
एक उदाहरण के रूप में, ट्यूटोरियल 2 के नीचे देखें। यह सम्मिश्रण का परिचय देता है। यह नहीं कहता कि सम्मिश्रण कैसे काम करता है। यह नहीं कहता कि glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
वास्तव में इसका क्या अर्थ है या क्या करता है। यह सिर्फ कहता है, "यहां कुछ कोड हैं जो चीजों को पारदर्शी बनाते हैं।"
यह सबसे अच्छा सीखने का माहौल नहीं है।
अधूरा ट्यूटोरियल
स्विफ्टलेस में ओपनजीएल 4.x ट्यूटोरियल का एक सेट है । Durian सॉफ्टवेयर में कुछ shader- आधारित OpenGL ट्यूटोरियल भी हैं । और वहाँ "OpenGLBook.com" ट्यूटोरियल है ।
ये सभी चीजें आम हैं ... कि वे अधूरी हैं और उन्हें छोड़ दिया गया है। उन सभी को लगभग 4-5 ट्यूटोरियल मिले और फिर उन्हें हटा दिया गया। उनमें से कोई भी बनावट, प्रकाश, या ऐसा कुछ भी नहीं पहुंचा। खैर, ड्यूरियन ने टेक्सचरिंग मारा लेकिन लाइटिंग नहीं।
उनसे बहुत कुछ किया जा सकता है, लेकिन बहुत कुछ ऐसा भी है जो गायब है।
बेशर्म आत्म-संवर्धन
मेरे अपने आधुनिक 3 डी ग्राफिक्स ट्यूटोरियल की समीक्षा करना हितों का एक भयानक संघर्ष होगा। इसलिए इसके बजाय, मैं उनके पीछे संगठन के बारे में लंबाई पर पकड़ करूँगा और मुझे लगता है कि वे अच्छे हैं।
ओह और हाँ, मैं ट्यूटोरियल 17 पर काम कर रहा हूं। परियोजना मृत नहीं है।
पहले तीन अध्याय वास्तव में सीखने के बारे में हैं कि ओपनजीएल पाइपलाइन कैसे काम करती है। यह शानदार विफल रहा क्योंकि इसने विवरण छिपाने की कोशिश की। इसके बजाय, मैं वास्तव में अच्छी तरह से उन विवरणों को समझाने का प्रयास करता हूं। बार-बार। परिचय सादे पाठ में पाइपलाइन की व्याख्या करता है। पहला ट्यूटोरियल इसे कोड संगत के साथ समझाता है। और दूसरा ट्यूटोरियल इसे और भी अधिक यात्रा करता है।
वहां से, मैं स्वाभाविक रूप से वस्तुओं की स्थिति के लिए आगे बढ़ता हूं। यह वर्दी का परिचय देता है, लेकिन मैं एक ही समय में वर्दी और परिप्रेक्ष्य प्रक्षेपण को जाम नहीं करना चाहता था। इसलिए मैंने दोनों अवधारणाओं को अलग कर दिया। प्रक्षेपण के बाद, गहराई बफरिंग एक उचित अगला कदम था, इसके बाद ट्रांसफॉर्म और मैट्रिस कैसे काम करते हैं। उसके बाद, कैमरे। चतुर्धातुक के साथ रोटेशन एक देर से जोड़ा गया था, लेकिन मुझे लगता है कि नवोदित ग्राफिक्स प्रोग्रामर के बारे में बात करना एक महत्वपूर्ण बात थी।
प्रकाश ट्यूटोरियल फिर से एक दूसरे पर निर्माण करते हैं। डिफ्यूज़, फिर प्रति-खंड प्रकाश, फिर स्पेक्युलर। डायनेमिक रेंज एक दिलचस्प विकल्प था। अधिकांश परिचयात्मक सामग्री इससे दूर रहने की कोशिश करती है, लेकिन मैं इसे गले लगाता हूं। आप इन दिनों ग्राफिक्स प्रोग्रामर नहीं हैं यदि आपको लगता है कि प्रकाश की तीव्रता हमेशा सीमा [0, 1] पर होती है। और आप इन दिनों ग्राफिक्स प्रोग्रामर नहीं हैं यदि आप नहीं जानते कि एक रेखीय रंग पाइपलाइन कैसे बनाए रखें।
प्रकाश में अंतिम, imposters पर, एक अजीब एक था। मैं ऐसे ट्यूटोरियल डिजाइन करने की कोशिश करता हूं जो समस्याओं को हल करने के बजाय कुछ ओपनग्लग फ़ंक्शंस दिखाते हैं, खासकर पुस्तक के रूप में। मेरे बहुत सारे ट्यूटोरियल डिज़ाइन कुछ विषयों के बारे में बात करने के तरीकों को खोजने से आते हैं, जबकि अभी भी उन्हें वास्तविक मुद्दे बनाते हैं और स्पष्ट नहीं हैं, "हम अभी एक्स सीख रहे हैं।" ज्यामिति शेड्स एक कठिन हैं, क्योंकि वे वास्तव में बहुत अधिक समस्याओं का समाधान नहीं करते हैं।
इम्पोस्टर्स ने एक समस्या का प्रतिनिधित्व किया जो जीएस वास्तव में हल करने के लिए उपयोगी थे। इसके अलावा, इसने मुझे अन्य कम उपयोग की जाने वाली चीजों के बारे में बात करने की अनुमति दी जैसे कि discard
और एक टुकड़े की गहराई को बदलना। और यह वास्तव में शेड्स की शक्ति को दर्शाता है: आप एक सपाट वर्ग को गोलाकार बना सकते हैं।
बनावट ट्यूटोरियल भी दिलचस्प हैं। कारणों में से एक है कि मैं फैलाना रंग बनावट के बारे में बात कर रहा था जब तक कि तीसरे को थोड़ी देर के लिए sRGB बनावट के बारे में बात करने से रोकना था। इस तरह, मैं रेखीय मुद्दों से निपटने के बिना बनावट (लोडिंग डेटा, उन्हें shaders, फ़िल्टरिंग, क्लैम्पिंग आदि) में मूल मुद्दों के बारे में बात कर सकता था। तो फिर मैं उस विषय पर एक संपूर्ण ट्यूटोरियल खर्च कर सकता हूं। यह मुझे वास्तव में अनुमति देता है, वास्तव में जोर देता है कि एक रैखिक रंग पाइपलाइन को बनाए रखना कितना महत्वपूर्ण है।
यह मेरे पालतू जानवरों में से एक है।