अधिकांश ट्यूटोरियल जब आउट ऑफ़ डेट हो तो OpenGL से शुरू करें [बंद]


16

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

मैं C ++ का उपयोग करके ओपनजीएल में प्रोग्रामिंग शुरू करने के लिए तैयार हूं। मुझे एक काम करने वाला कंपाइलर मिला है (DevCpp; मुझे वीसी ++ में स्विच करने के लिए मत कहो, और मुझसे मत पूछो)। अब मैं सिर्फ OpenGL के साथ प्रोग्राम करने के लिए एक ठोस ट्यूटोरियल की तलाश कर रहा हूं। मेरे सहायक ने नेह प्रोडक्शंस द्वारा प्रदान किया गया ट्यूटोरियल पाया, लेकिन जैसा कि मैंने पता लगाने के लिए आया है, यह दिन का रास्ता है! (हालांकि मैंने एक OpenGL कैनवास का समर्थन करने के लिए एक मूल विंडो को एक साथ खींचा था)

फिर मैं ऑनलाइन गया, और ओपनजीएल सुपरबिल को पाया, जो जाहिरा तौर पर फ्रीग्लुट का उपयोग करता है? लेकिन मैं जानना चाहता हूं कि सुपरबेल 5 वां संस्करण अब तक का है या नहीं। मेरे सुझाव को समाप्त करने का सुझाव नवीनतम संस्करण 2.6.0 था, लेकिन अब यह 2.8.0 है!

  • क्या OpenGL सुपरबिल अभी भी एक अच्छा और काफी अप-टू-डेट जगह है?
  • क्या ओपनजीएल सीखने के लिए एक बेहतर जगह है?
  • क्या मुझे DevCpp में फ्रीग्लूट को स्टोर करने की अनुमति है जिसमें डायरेक्टरी (शायद GL) शामिल है, या कुछ महत्वपूर्ण प्रक्रिया है?
  • क्या कोई टिप्पणी या सुझाव है जो मैंने पूछना शुरू नहीं किया क्योंकि मैं केवल शुरुआत कर रहा हूं?

@ ड्रेडा ने मेरे लिए कुछ चीजों को मंजूरी दी, इसलिए अब मुझे इस बात का बेहतर विचार है कि क्या पूछना है:

मुझे लगता है कि मैं सीधे OpenGL तक पहुँचने के बजाय एक रैपर लाइब्रेरी का उपयोग करके OpenGL के साथ शुरू करना चाहूंगा।
मुझे लगता है कि, शुरुआत के लिए, मेरे लिए कार्यक्रम बनाना और अच्छे परिणाम प्राप्त करना आसान होगा, जबकि मुझे अभी तक सभी गंभीर विवरणों (@stephelton उल्लेखित) को समझने की आवश्यकता नहीं है।

समस्या यह है कि मुझे कोई भी पुस्तकालय नहीं मिल रहा है जिसमें अब समर्थित कार्यों के लिए अपरिभाषित संदर्भ नहीं हैं। फ्रीग्लुट चालू लगता है, लेकिन यह अभी भी GLU का उपयोग करता है।
क्या कोई जानता है मैं क्या कर सकता हूं?
इसके अलावा, मैंने पहले सुपरबिल के स्रोत को संकलित करने की कोशिश की, लेकिन मुझे त्रुटियां मिलीं क्योंकि GLAPI को एक प्रकार के रूप में परिभाषित नहीं किया जा रहा है, त्रुटि GLU लाइब्रेरी में उत्पन्न हो रही है।

मैं SuperBible का उपयोग करना चाहता हूं, लेकिन मुझे नहीं पता कि इसे कैसे ठीक किया जाए।


2
आपको जीसीसी में स्विच करना चाहिए।
मांस नहीं

DevCpp सिर्फ एक आईडीई है; जो GCC (विशिष्ट होने के लिए मिंगव) चलाता है। लेकिन चूंकि यह उल्लेख किया गया था, ग्रहण सीडीटी बेहतर होगा, क्योंकि यह पिछले 10 वर्षों से नहीं छोड़ा गया है।
कैस्पर बेयर

4
@ कैस्पर देवकप विरासत का उत्तराधिकारी कोड था :: ब्लॉक और अभी भी नियमित रूप से अपडेट किया जाता है।
एलेक्स शेपर्ड

1
यदि आप ओपनजीएल के आसपास एक रैपर लाइब्रेरी चाहते हैं, तो मेरा सुझाव है कि आप एसएफएमएल की कोशिश करें । एसएफएमएल सामान्य सामान प्रदान करता है जैसे खिड़की का निर्माण, टाइमर आदि, जबकि आपको पाठ और सरल आकृतियों को आकर्षित करने की अनुमति देता है। आप एसएफएमएल फ़ंक्शंस और कच्चे एपीआई कॉल्स को मिलाकर जब चाहे तब "रॉ" ओपनजीएल का उपयोग करके ड्रोन को छोड़ सकते हैं।
Oskar N.

1
आप शीर्षक में "{CLOSED}" जोड़कर एक प्रश्न को "बंद" नहीं कर सकते। प्रश्न मॉडरेटर्स द्वारा बंद किए जाएंगे या यदि पर्याप्त उपयोगकर्ता ने प्रश्न को बंद करने के लिए मतदान किया है। मैं आपके संपादन वापस ले लूंगा .. "बंद" स्वचालित रूप से आपके शीर्षक से जोड़ दिया जाएगा यदि
मॉडरेटर्स

जवाबों:


19

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

बगल में कि यहाँ और वहाँ ज्ञान के बिट्स हैं। OpenGL विकी काफी अच्छी तरह से बनाए रखा है। यह कोड "सर्वश्रेष्ठ अभ्यास" नहीं है और कभी-कभी ओपनगेल संस्करण में आने पर अस्पष्टता होती है, लेकिन उन दुर्लभ अवसरों के बाहर, यह एक महान संसाधन है।

यदि आप GLSL के बारे में सीखना चाहते हैं, तो प्रकाशस्तंभ से GLSL कोर ट्यूटोरियल है। हालांकि यह एकमात्र मुख्य ज्ञान है जो मुझे साइट पर "विश्वास" करना होगा, बाकी पुराना हो जाता है।

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

अधिकांश, यदि सभी वास्तव में नहीं हैं, तो ओपनजीएल पुस्तकें उपलब्ध हैं जो पुरानी हैं। नई SuperBible किसी प्रकार की एक सनकी है और मैं इसे किसी को भी सुझा नहीं सकता। OpenGL 4.1 के लिए OpenGL प्रोग्रामिंग गाइड 16 सितंबर को आता है, दुर्भाग्य से 7 वें संस्करण में पदावनत कोड का उपयोग किया जाता है, इसलिए आपको बस इंतजार करना होगा, मुझे यकीन है कि मैं हूं।

और टोकोर्स, आप हमेशा यहां सवाल पूछ सकते हैं।


1
आप सुपरबेल का सुझाव क्यों नहीं देंगे?
कोडस्मिथ

3
@AUTO सुपरबेल का 5 वां संस्करण ओपनगेल के चारों ओर एक कस्टम रैपर का उपयोग करता है ताकि इसे "सुलभ" बनाया जा सके। बहुत से उदाहरणों में कस्टम आवरण का अत्यधिक उपयोग होता है। यह आपको यह नहीं सिखाता है कि यह किस चीज से दबा हुआ है, जो ओपनग्ल कोर स्पेसिफिकेशन है। जिस तरह से मैं इसे देखता हूं, अगर आपको स्पष्ट रूप से अपग्रेड किए गए ओपनजीएल नहीं सीखना है, तो बस इसे भूल जाओ भी मौजूद है। इसे सीखने का कोई मतलब नहीं है। मुख्य विनिर्देश अधिक स्पष्ट और शक्तिशाली है।
dreta

@AUTO मुख्य विनिर्देश शुरुआत में बहुत अधिक मांग है, यह एक अच्छी बात है। यह आपको प्रतिपादन की अधिकांश प्रक्रिया का ध्यान रखने के लिए बाध्य करेगा, जिससे आपको पूरी समझ और उस पर नियंत्रण मिलेगा। यह हटाए गए कोड की तुलना में कई, बहुत अधिक संभावनाएं खोलता है। उसके बाद अगर आप अपने OS की API और लानच OpenGL को बिना ग्लूट जैसी चीज़ों के सीख सकते हैं तो आप वंडरलैंड में हैं।
dreta

ठीक है, इसलिए मैं आपसे एक महत्वपूर्ण प्रश्न पूछना चाहता हूं: जीएलयू पुस्तकालय को पदावनत और पूरी तरह से असमर्थित लगता है; विनिर्देशन का उपयोग करके, क्या मुझे GLU की आवश्यकता को दरकिनार करते हुए सीधी पहुँच प्राप्त होती है? इस तरह, मुझे GLU लाइब्रेरी द्वारा संदर्भित गैर-मौजूदा कार्यों के लिए कोई और लिंकर त्रुटियों नहीं मिलेगी?
कोडस्मिथ

@AUTO GLU पूरी तरह से अनावश्यक है, मैंने इसे कभी भी ग्राफिक्स प्रोग्रामिंग क्लास के दौरान 10 फुट के पोल से छुआ था (हमें डिप्रेस्ड कोड का उपयोग करना पड़ा, यह दर्दनाक था, पाठ प्रोग्राम की तुलना में मानक तेजी से बदलते हैं, मुझे लगता है)। यह सिर्फ एक पुस्तकालय है जो अपग्रेड किए गए कोड के साथ मदद करता है। यदि आपके पास GLU के साथ अपना कोड सेट है, तो यह संभवत: बदबू आ रही है।
dreta

1

यह सवाल पूछे जाने के बाद से कुछ समय हो गया है, लेकिन मुझे उम्मीद है कि इससे उन लोगों को मदद मिलेगी जिनके पास आपके जैसा ही सवाल है।

मैं एक मिनीबक पर पढ़कर ओपनजीएल के साथ शुरू हुआ arcsynthesis.org। यकीन नहीं होता कि इसे किसने लिखा है। ऐसा लगता है कि साइट का पंजीकरण लैप्स हो गया है या कुछ और है, लेकिन आप इसे यहां पा सकते हैं: http://web.archive.org/web/20140209181347/http://www.arcsynthesis.org/gltut/ । यह OpenGL 3.3 का उपयोग करता है, इसलिए आप आधुनिक पाइपलाइन और उन सभी प्रथाओं का उपयोग करेंगे, जो आपको लुभाती हैं, लेकिन आप टेसलेशन या कंपाउंड शेड्स के संपर्क में नहीं आएंगे।

देखने लायक एक और साइट है https://open.gl/ । ऐसा लगता है कि बहुत शुरुआती ध्यान केंद्रित है और उपरोक्त सामग्री के रूप में लगभग गहराई में चीजों को कवर नहीं करता है, लेकिन यह उन लोगों के लिए एक अच्छा शुरुआती बिंदु हो सकता है जो अभी शुरू कर रहे हैं।

अगर आपको मदद की ज़रूरत हो तो OpenGL विकी को पढ़ें और अपने फंक्शन के नाम को याद रखें। विकी पर कुछ पृष्ठ पूरी तरह से बेकार हैं, लेकिन अन्य काफी सहायक हैं, दोनों एक संदर्भ के रूप में और सीखने की सामग्री के रूप में।


1
व्यक्ति स्वीकार किए जाते हैं जवाब में बताया गया है कि यह लिखा निकोल Bolas - gamedev.stackexchange.com/users/8240/nicol-bolas
जेसी दोर्से

0

ये पुराने ट्यूटोरियल अभी भी शुरुआती के लिए बहुत प्रासंगिक हैं। वास्तव में, मैं ओपनगेल के हाल के संस्करणों के बजाय वहां शुरू करने का सुझाव दूंगा। हाल के संस्करणों ने ड्राइंग ज्यामिति के कुछ आसान तरीकों को छोड़ दिया है (अर्थात तत्काल-मोड ड्राइंग)।

हाल के संस्करणों के साथ, आपको वर्टिकल के एरे को तैयार करना और भेजना होगा और वीडियो कार्ड को बताना होगा कि आपके द्वारा प्रदान किए गए ऐरे में आपके सिरों को कैसे व्यवस्थित किया गया है। ये बातें बहस के लिए बोझिल हैं।

कुछ संस्करणों (जैसे कि OpenGL ES 2.x) के लिए आपको अपने स्वयं के प्रकाश समीकरण (फ्रैगमेंट शेड के रूप में) प्रदान करने और अपने स्वयं के शीर्ष डेटा को बदलने की आवश्यकता होती है, ताकि यह उस स्क्रीन पर समाप्त हो जाए जहां आप इसे चाहते हैं (वर्टेक्स शेडर्स)। यह डीबग करना और भी कठिन है, और शुरुआत के लिए कोई जगह नहीं है (मेरी राय में)।

तो मैं वास्तव में सुझाव दूंगा कि आप उन NeHe ट्यूटोरियल्स (आदि) पर वापस जाएं और वहां से शुरू करें। वे "आउट ऑफ डेट" हो सकते हैं लेकिन वे अभी भी काम करते हैं। जब आप यह समझने लगते हैं कि OpenGL में रेंडरिंग पाइपलाइन में वास्तव में क्या होता है और कुछ गणितीय अवधारणाओं के लिए एक महसूस करें जो इन चीजों को काम करते हैं, तो आप कुछ और अप-टू-डेट तरीकों पर गौर करने के लिए तैयार होंगे OpenGL में प्रस्तुत करना।


वास्तव में वे काम नहीं करते। इसलिए मैंने यह सवाल पोस्ट किया है। वे फ़ंक्शन gluPerspective का उपयोग कर रहे हैं जो कि पदावनत है, और कोई पूर्ण विकल्प नहीं है।
कोडस्मिथ

1
यह एक OpenGL फ़ंक्शन नहीं है। यह एक अन्य पुस्तकालय द्वारा प्रदान किया गया एक अलग उपयोगिता कार्य है। आप आसानी से इसके लिए कोड पा सकते हैं - यह बहुत मुश्किल नहीं है।
19'12

धन्यवाद, लेकिन मुझे केवल एक अपूर्ण विकल्प मिला जिसे मैं नहीं जानता कि कैसे उपयोग करना है। यह एक तर्क "फ्लोट * मैट्रिक्स" को स्वीकार करता है, जबकि पुराना कुछ आंतरिक मैट्रिक्स का उपयोग करता है। फिर मैं इसके लिए क्या रखूं?
कोडस्मिथ

"GluPerspective कार्यान्वयन" के लिए Google पर पहला हिट वास्तव में वही है जो आप देख रहे हैं। इसे glFrustum कहते हैं, जो OpenGL के कुछ हालिया संस्करणों में उपलब्ध नहीं है (ES 2.x इसमें शामिल नहीं है)। यहां तक ​​कि इसके लिए इम्प्लांट ढूंढना भी मुश्किल नहीं है।
नॉटलेश

0

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

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

मैं अच्छे ट्यूटोरियल के साथ एक साइट जोड़ना चाहता हूं, जो मुझे हाल ही में मिला है http://ogldev.atspace.co.uk/


धन्यवाद, मैं उस ट्यूटोरियल की जाँच करूँगा; लेकिन ओपनजीएल सुपरबिल का उपयोग करने के लिए, मेरा सवाल अभी भी बना हुआ है: मैं जीएलयू को कैसे ठीक करूं, क्योंकि फ्रीग्लूट बंद है?
कोडस्मिथ

@AUTO: FreeGLUT "आधारित" GLU नहीं है। कुछ फ्रीग्लूट फ़ंक्शंस GLU कहते हैं, लेकिन यदि आप उन फ़ंक्शंस को कॉल नहीं करते हैं, तो आपको कोई समस्या नहीं होगी।
निकोल बोलस

लेकिन क्या यह संभव नहीं है कि सुपरबेल इन कार्यों को कॉल करे? और अगर यह होता है, मैं नहीं कर सकता का उपयोग यह
कोडस्मिथ

वास्तव में, मेरी राय सुपरबेल के साथ प्रदान किए गए स्रोत कोड से परेशान नहीं करना है। इसे पढ़ें लेकिन खरोंच से सब कुछ बनाने की कोशिश करें। GLU के साथ आपकी समस्याओं पर, मेरा सबसे अच्छा अनुमान है कि आपने अपने पुस्तकालयों को सही ढंग से कॉन्फ़िगर / स्थापित नहीं किया है। MinGW का नवीनतम संस्करण डाउनलोड करें। इसके अलावा फ्रीग्लूट का नवीनतम संस्करण डाउनलोड करें और इसे संकलित करें, या पूर्व-संकलित लाइब्रेरी ढूंढें। वैसे भी, आपको योजना शुरू करने के लिए इतना समय बिताने के बजाय कुछ चीजें सीखना शुरू करना चाहिए।
ग्रिएवरहार्ट

@AUTO: यह संभावना क्यों है कि सुपरबेल उन्हें कॉल करता है? यदि यह उन्हें कॉल करता है, तो सुपरबेल का कोड काम नहीं करेगा। यही कारण है कि यह उन्हें फोन नहीं करता है।
निकोल बोलस

0

arcsynthesis.org (स्वीकृत उत्तर में उल्लिखित साइट) दुर्भाग्य से नीचे और बाहर लगती है। (संपादित करें: यह इस लिंक पर उपलब्ध है !)।

OpenGL 4 के लिए एंटोन जेरडेलन के ट्यूटोरियल 2014 के मध्य तक बहुत ही पठनीय और अद्यतित हैं। पहले कुछ मुफ्त हैं, बाकी अमेजन पर उपलब्ध हैं, जहां उनके पास बहुत कम समीक्षा हैं, एक छोटी सी कीमत के लिए। अब तक मैं प्रसन्न हूं।

OpenGL 3.3+ के लिए http://www.opengl-tutorial.org/ पर कुछ और मुफ्त ट्यूटोरियल हैं । वे 2012 तक वापस आ गए, लेकिन अन्य स्रोतों के लिए अच्छी पूरक सामग्री हो सकती है।


OGLDev वर्तमान में, गहराई में और मुक्त है। ogldev.atspace.co.uk/index.html
Yattabyte


यह देखने के लिए महान उपलब्ध है! मैं इन सामग्रियों की भी जाँच करूँगा।
IHateCamelCase
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.