क्या नए ग्राफिक्स प्रोग्रामर को ओपनजीएल के बजाय वल्कन सीखना चाहिए?


53

विकी से : "वुलकान एपीआई को शुरुआत में ख्रोनो द्वारा 'अगली पीढ़ी ओपनग्लस पहल' के रूप में संदर्भित किया गया था, और यह " ओपनजीएल और ओपनजीएल ईएस को एक आम एपीआई में एकीकृत करने के लिए एक आधार-अप redesign प्रयास है जो पीछे नहीं होगा। मौजूदा ओपनजीएल संस्करणों के साथ संगत "।

तो क्या अब ग्राफिक्स प्रोग्रामिंग में शामिल होने वालों को ओपनजीएल के बजाय वुलकन सीखने के लिए बेहतर सेवा दी जानी चाहिए? ऐसा लगता है कि वे उसी उद्देश्य की सेवा करेंगे।


1
यदि आप एक एपीआई में कुछ कर सकते हैं, तो आप इसे किसी भी अन्य एपीआई कर सकते हैं, बस इसे करने का तरीका एपीआई पर निर्भर करेगा।
एक --- बी

जवाबों:


33

मुश्किल से!

ऐसा बहुत कुछ लगता है जैसे "नए प्रोग्रामर को C के बजाय C ++ सीखना चाहिए," या "क्या नए कलाकारों को शारीरिक पेंटिंग के बजाय डिजिटल पेंटिंग सीखना चाहिए।"

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

विशेषज्ञता शायद ही कभी एक विपणन कौशल है।

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

विशेषज्ञता शायद ही एक कुशल प्रतिमान है।


2
: अच्छा जवाब है, मुझे इस याद दिलाया elise.com/quotes/heinlein_-_specialization_is_for_insects
विल

7
यह C ++ सादृश्य अनुचित है। Vulkan OpenGL के रचनाकारों द्वारा विकसित एक नई अगली पीढ़ी का एपीआई है। C ++ एक स्थापित, ज्यादातर बैकवर्ड-कम्पेटिबल प्रतियोगी टू C.
Moby Disk

वे विशिष्टताएँ सादृश्य के बिंदु के लिए अप्रासंगिक हैं।
मुहूर्त

6
दावा करना विशिष्ट या अक्षम है अविश्वसनीय अविश्वसनीय है। एक अनुवादक जो हर एक बोली जाने वाली भाषा में सभी पाँच शब्दों को जानता है, बेकार है, लोग उन अनुवादकों को नियुक्त करेंगे जो बहुत कम भाषाओं में महारत हासिल करते हैं। अब से अधिक -specializing है समस्याग्रस्त। एक अनुवादक जिसने एक भाषा में पूरी तरह से महारत हासिल की है और केवल यह जानता है कि भाषा भी एक उपयोगी अनुवादक नहीं है। और देवों (इंडी या अन्यथा) को नए उपकरण सीखने में अपना सारा समय खर्च न करने की सावधानी बरतनी चाहिए। आखिरकार उन्हें वास्तव में कुछ बेचने की जरूरत है, ऐसा न हो कि वे खुद को दिवालिया
पाएं

बस स्पष्ट होने के लिए, मैं जरूरी नहीं कि आप ओपनगैल और वुलकान के संबंध में असहमत हों, यह संभवतः एक ऐसा मामला है जहां सिर्फ वल्कन के बजाय दोनों को सीखना बेहतर विकल्प है।
8bittree

40

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

  1. जीएल और जीएलईएस कई साल पहले डिजाइन किए गए थे, जब जीपीयू ने काफी अलग तरीके से काम किया था। (सबसे स्पष्ट अंतर तत्काल मोड ड्रा कॉलिंग बनाम टाइलिंग और कमांड कतारें हैं।) जीएल आपको तत्काल-मोड शैली में सोचने के लिए प्रोत्साहित करता है, और इसमें बहुत सारी विरासत cruft है। Vulkan प्रोग्रामिंग मॉडल प्रदान करता है जो समकालीन GPU के काम करने के बहुत करीब हैं, इसलिए यदि आप Vulkan सीखते हैं, तो आपको बेहतर समझ होगी कि तकनीक वास्तव में कैसे काम करती है, और क्या कुशल है और क्या अक्षम है। मैं बहुत से ऐसे लोगों को देखता हूं, जिन्होंने जीएल या जीएलईएस के साथ शुरुआत की है और तुरंत खराब आदतों में शामिल हो गए हैं जैसे वीबीओ का उपयोग करने के बजाय अलग-अलग ड्रॉ कॉल जारी करना, या इससे भी बदतर, प्रदर्शन सूचियों का उपयोग करना। जीएल प्रोग्रामर्स के लिए यह पता लगाना कठिन है कि अब क्या प्रोत्साहित नहीं किया जाता है।

  2. वुलकन से जीएल या जीएलईएस की ओर बढ़ना इसके मुकाबले बहुत आसान है। Vulkan स्पष्ट रूप से बहुत सारी चीजें बनाता है जो GL में छिपी या अप्रत्याशित थीं, जैसे कि कंसीलर कंट्रोल, शेयरिंग और रेंडरिंग स्टेट। यह ड्राइवर से एप्लिकेशन तक बहुत सारी जटिलता को बढ़ाता है: लेकिन ऐसा करने से, यह एप्लिकेशन को नियंत्रण देता है, और विभिन्न GPU विक्रेताओं के बीच अनुमानित प्रदर्शन और अनुकूलता प्राप्त करने के लिए इसे सरल बनाता है। यदि आपके पास कुछ कोड है जो वल्कन में काम करता है, तो इसके बजाय इसे GL या GLES में पोर्ट करना काफी आसान है, और आप कुछ ऐसी चीज़ों के साथ समाप्त होते हैं जो अच्छी GL / GLES आदतों का उपयोग करते हैं। यदि आपके पास जीएल या जीएलईएस में काम करने वाला कोड है, तो आपको वल्कन में इसे कुशलता से काम करने के लिए लगभग फिर से शुरू करना होगा: खासकर अगर यह एक विरासत शैली में लिखा गया था (देखें बिंदु 1)।

मैं पहले से चिंतित था कि वल्कन के खिलाफ कार्यक्रम करना बहुत कठिन है, और जबकि यह बड़ी कंपनियों में अनुभवी डेवलपर्स के लिए ठीक होगा, यह इंडीज़ और शौकियों के लिए एक बड़ा अवरोधक होगा। मैंने इस सवाल को वर्किंग ग्रुप के कुछ सदस्यों के समक्ष रखा, और उन्होंने कहा कि उनके पास उन लोगों के कुछ डेटा पॉइंट हैं, जिनसे उन्होंने बात की है, जो पहले ही वल्कन में चले गए हैं। ये लोग UE4 एकीकरण पर काम करने वाले एपिक के डेवलपर्स से लेकर हॉबीस्ट गेम डेवलपर्स तक हैं। उनका अनुभव यह था कि शुरू करना (यानी स्क्रीन पर एक त्रिभुज के लिए हो रही है) में अधिक अवधारणाओं को सीखना और लंबे समय तक बॉयलरप्लेट कोड शामिल होना शामिल था, लेकिन यह बहुत जटिल नहीं था, यहां तक ​​कि इंडीज़ के लिए भी। लेकिन उस अवस्था में पहुंचने के बाद, उन्हें एक वास्तविक, शिप करने योग्य एप्लिकेशन के निर्माण में बहुत आसान लगा, क्योंकि (ए) विभिन्न विक्रेताओं के कार्यान्वयन के बीच व्यवहार बहुत अधिक अनुमानित है, और (बी) कुछ ऐसा हो रहा है जो सभी प्रभावों के साथ अच्छा प्रदर्शन करता है, जिसमें अधिक परीक्षण और त्रुटि शामिल नहीं थी। असली डेवलपर्स के इन अनुभवों के साथ, उन्होंने मुझे आश्वस्त किया कि ग्राफिक्स के शुरुआती हिस्से के लिए भी वल्कन के खिलाफ प्रोग्रामिंग व्यवहार्य है, और यह कि जब आप ट्यूटोरियल प्राप्त कर लेते हैं और डेमो और एप्लिकेशन बनाना शुरू कर देते हैं, तो समग्र जटिलता कम होती है।

जैसा कि दूसरों ने कहा है: जीएल कई प्लेटफार्मों पर उपलब्ध है, वेबगेल एक अच्छा वितरण तंत्र है, इसमें बहुत सारे मौजूदा सॉफ्टवेयर हैं जो जीएल का उपयोग करते हैं, और उस कौशल के लिए कई नियोक्ता काम पर रखते हैं। यह अगले कुछ वर्षों के लिए होने जा रहा है, जबकि वुलकान एक पारिस्थितिकी तंत्र को रैंप और विकसित करता है। इन कारणों से, आप पूरी तरह से जीएल सीखने से इंकार करना मूर्खता होगी। फिर भी, आपके पास इसके साथ बहुत आसान समय होगा, और एक बेहतर GL प्रोग्रामर (और सामान्य रूप से एक बेहतर GPU प्रोग्रामर) बनें, अगर आप किसी ऐसी चीज़ से शुरुआत करते हैं जो आपको GPU को समझने में मदद करती है, तो समझने के बजाय कि उन्होंने कैसे काम किया। 20 साल पहले।

बेशक, वहाँ एक विकल्प अधिक है। मुझे नहीं पता कि यह विशेष रूप से आपके लिए प्रासंगिक है, लेकिन मुझे लगता है कि मुझे इसे अन्य आगंतुकों के लिए वैसे भी कहना चाहिए।

इंडी गेम्स डेवलपर या गेम डिज़ाइनर बनने के लिए, या वीआर अनुभव प्राप्त करने के लिए, आपको वुलकन या जीएल सीखने की आवश्यकता नहीं है। बहुत से लोग गेम इंजन के साथ शुरू होते हैं (एकता या यूई 4 इस समय लोकप्रिय हैं)। इस तरह के एक इंजन का उपयोग करने से आपको उस अनुभव पर ध्यान केंद्रित करने में मदद मिलेगी जो आप इसके पीछे की तकनीक के बजाय बनाना चाहते हैं। यह जीएल और वुलकन के बीच के अंतर को आपसे छिपाएगा, और आपको इस बारे में चिंता करने की आवश्यकता नहीं है कि आपके प्लेटफॉर्म पर किसका समर्थन है। यह आपको 3 डी को-ऑर्डिनेट्स, ट्रांसफ़ॉर्म, लाइटिंग और एनीमेशन के बारे में जानने देता है, जो एक ही बार में सभी ग्रैटी डिटेल्स से निपटने के लिए है। कुछ गेम या वीआर स्टूडियो केवल एक इंजन में काम करते हैं, और उनके पास एक पूर्णकालिक जीएल विशेषज्ञ नहीं है। यहां तक ​​कि बड़े स्टूडियो में जो अपने स्वयं के इंजन लिखते हैं, जो लोग ग्राफिक्स प्रोग्रामिंग करते हैं वे अल्पसंख्यक हैं,

GPU के साथ बातचीत करने के तरीके के बारे में सीखना निश्चित रूप से एक उपयोगी कौशल है, और एक जो कई नियोक्ताओं को महत्व देगा, लेकिन आपको ऐसा महसूस नहीं होना चाहिए कि आपको 3 डी प्रोग्रामिंग में सीखना है; और यहां तक ​​कि अगर आप इसे जानते हैं, यह जरूरी नहीं कि आप हर दिन कुछ का उपयोग करें।


2
मैं कुछ हद तक असहमत हूं। Vulkan (और DX12) लागू करने के लिए बहुत मुश्किल के लिए, साबित हो गया है अनुभवी devs। वल्कन ने आपको जो भी शक्ति प्रदान की है, उसके साथ अपने आप को पैर में गोली मारना बहुत आसान है। इसके अलावा, वल्कन को बहुत अधिक बॉयलरप्लेट कोड की आवश्यकता होती है। किसी के लिए बस GPU प्रोग्रामिंग के बारे में जानने के लिए, मुझे लगता है कि वल्कन बहुत भारी हो जाएगा।
रिचीसेम्स

2
@ रीचम्स मुझे नहीं लगता कि आपका मतलब "कार्यान्वयन" था। केवल GPU विक्रेता को Vulkan को लागू करना है, और यह OpenGL को लागू करने की तुलना में बहुत आसान है। (मेरा विश्वास करो, मैंने इसे कर लिया है!) लेकिन यह मानते हुए कि इसका मतलब है कि इसके साथ या कार्यक्रम के साथ एकीकृत करना मुश्किल है, मैंने कुछ जानकारी के साथ एक पैराग्राफ जोड़ा है जो मुझे वल्कान डब्ल्यूजी से सीखा है।
दान हुल्म

सही बात। कार्यान्वयन शायद एक खराब शब्द विकल्प है। मेरा मतलब आपके कार्यक्रम में 'उपयोग करने' से था। लेकिन मुझे आपके संपादन पसंद हैं। अच्छी तरह से रख
रिचीम्स

@DanHulme - आपकी टिप्पणी से आश्चर्यचकित हूं "GL आपको तत्काल-मोड शैली में सोचने के लिए प्रोत्साहित करता है"। मैंने सोचा था कि केवल के सच था जल्दी ओपन संस्करणों?
टूलमेकरसैट

1
@ToolmakerSteve OpenGL WG ने समवर्ती और बैचयुक्त लेखन को जोड़ने में बहुत काम किया है, इसलिए आप अपने प्रोग्राम को इस तरह से व्यक्त कर सकते हैं, जो कि tiling / स्थगित कार्यान्वयन के लिए उपयुक्त हो। लेकिन यह अभी भी एक नींव है जिसे तत्काल-मोड युग में सेट किया गया था, यही वजह है कि उन लोगों ने वल्कन में एक नई शुरुआत का फैसला किया था। और मैं अभी भी बहुत सारे नए उपयोगकर्ताओं को जीएल के साथ शुरू करता हूं और एक तत्काल-मोड मानसिक मॉडल बनाता हूं कि कार्यान्वयन कैसे काम करते हैं।
दान हुल्म

26

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

तो सवाल यह है: क्या आप सीखना चाहते हैं कि एपीआई का उपयोग कैसे करें? या क्या आप ग्राफिक्स सीखना चाहते हैं ?

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

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

लेकिन वे वास्तव में ग्राफिक्स अवधारणाएं नहीं हैं। वे एक अंत के लिए एक साधन हैं।

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

इसके विपरीत, OpenGL के साथ उस बिंदु पर जाने के लिए कम काम की आवश्यकता होती है। और हाँ, मैं आधुनिक, shader- आधारित कोर-प्रोफाइल OpenGL की बात कर रहा हूँ।

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

ओपन में ... यह तीन कार्यों है: glClearColor, glClear, और प्लेटफ़ॉर्म-विशिष्ट स्वैप कॉल बफ़र्स। यदि आप अधिक आधुनिक OpenGL का उपयोग कर रहे हैं, तो आप इसे दो तक ले जा सकते हैं: glClearBufferuivऔर बफ़र्स स्वैप करें। आपको यह जानने की ज़रूरत नहीं है कि फ्रेमबफ़र क्या है या इसकी छवि कहाँ से आती है। आप इसे साफ़ करें और बफ़र्स स्वैप करें।

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

इसके अलावा, OpenGL एक (अपेक्षाकृत) सुरक्षित एपीआई है। यह गलतियाँ जारी करेगा जब आप कुछ गलत करते हैं, आमतौर पर। वल्कन नहीं है। जब डिबगिंग परतें होती हैं जो आप मदद करने के लिए उपयोग कर सकते हैं, तो कोर वालकैन एपीआई आपको लगभग कुछ भी नहीं बताएगा जब तक कि कोई हार्डवेयर दोष न हो। यदि आप कुछ गलत करते हैं, तो आप कचरा रेंडर कर सकते हैं या जीपीयू को क्रैश कर सकते हैं।

वल्कन की जटिलता के साथ युग्मित, गलती से गलत काम करना बहुत आसान हो जाता है। सही लेआउट में बनावट सेट करने के लिए भूलना एक कार्यान्वयन के तहत काम कर सकता है, लेकिन दूसरे पर नहीं। एक sychronization बिंदु को भूलना कभी-कभी काम कर सकता है, लेकिन फिर अचानक बिना किसी कारण के असफल हो जाता है। इत्यादि।


कहा जा रहा है कि सभी, ग्राफ़िकल तकनीकों को सीखने की तुलना में ग्राफिक्स सीखने के लिए अधिक है। विशेष रूप से एक क्षेत्र है जहां वल्कन जीतता है।

चित्रमय प्रदर्शन

3 डी ग्राफिक्स प्रोग्रामर होने के नाते आमतौर पर आपके कोड का अनुकूलन करने के लिए कुछ विचार की आवश्यकता होती है। और यह वह जगह है जहां OpenGL की जानकारी छिपाना और अपनी पीठ के पीछे चीजें करना एक समस्या बन जाती है।

OpenGL मेमोरी मॉडल सिंक्रोनस है। कार्यान्वयन को आदेशों को अतुल्यकालिक रूप से जारी करने की अनुमति दी जाती है जब तक कि उपयोगकर्ता अंतर नहीं बता सकता। इसलिए यदि आप कुछ छवि को प्रस्तुत करते हैं, तो इससे पढ़ने की कोशिश करें, कार्यान्वयन को इन दो कार्यों के बीच एक स्पष्ट सिंक्रनाइज़ेशन घटना जारी करनी चाहिए।

लेकिन ओपनजीएल में प्रदर्शन प्राप्त करने के लिए, आपको यह जानना होगा कि कार्यान्वयन ऐसा करते हैं, ताकि आप इससे बच सकें । आपको महसूस करना होगा कि कार्यान्वयन गुप्त रूप से सिंक्रोनाइज़ेशन ईवेंट्स जारी कर रहा है, और फिर जितना संभव हो सके उनसे बचने के लिए अपने कोड को फिर से लिखें। लेकिन एपीआई खुद यह स्पष्ट नहीं करता है; आपको यह ज्ञान कहीं से प्राप्त करना होगा।

वल्कन के साथ ... आप एक हैं जिन्हें उन तुल्यकालन घटनाओं को जारी करना है। इसलिए, आपको इस तथ्य के बारे में पता होना चाहिए कि हार्डवेयर कमांड को सिंक्रोनाइज़ नहीं करता है। आपको पता होना चाहिए कि आपको उन घटनाओं को कब जारी करने की आवश्यकता है, और इसलिए आपको पता होना चाहिए कि वे शायद आपके कार्यक्रम को धीमा कर देंगे। इसलिए आप उनसे बचने के लिए वह सब कुछ कर सकते हैं जो आप कर सकते हैं।

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

यदि आपको कुछ फ्रेमबफ़र काम करना है जो आपको एक नया रेंडरपास बनाने के लिए मजबूर करता है ... ऑड्स अच्छे हैं कि यह धीमी गति से होगा यदि आप इसे रेंडरपास के अलग सबपास में फिट कर सकते हैं। इसका मतलब यह नहीं है कि आप ऐसा नहीं कर सकते हैं, लेकिन एपीआई आपको सामने बताता है कि यह एक प्रदर्शन समस्या पैदा कर सकता है।

ओपनजीएल में, एपीआई मूल रूप से आपको अपने फ्रेमबफ़र संलग्नक को विली-निली को बदलने के लिए आमंत्रित करता है। ऐसा कोई मार्गदर्शन नहीं है जिस पर बदलाव तेज़ या धीमे होंगे।

तो उस स्थिति में, वल्कन सीखने से आपको ग्राफिक्स को तेज बनाने के तरीके के बारे में बेहतर सीखने में मदद मिल सकती है। और यह निश्चित रूप से आपको सीपीयू ओवरहेड को कम करने में मदद करेगा।

इससे पहले कि आप उस बिंदु तक पहुँच सकते हैं, जहाँ आप ग्राफ़िकल रेंडरिंग तकनीक सीख सकते हैं।


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

1
@ डनहुलमे: यह सही शिक्षण सामग्री का उपयोग करने का मामला है। ऑनलाइन ऐसी बहुत सारी सामग्रियां हैं जो आधुनिक मुहावरों का उपयोग करती हैं। किसी को भी कभी भी एक संदर्भ मैनुअल या विनिर्देश पढ़कर ग्राफिक्स सीखने की कोशिश नहीं करनी चाहिए।
निकोल बोलस

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

@ डनहल्मे: " वल्कन में वह गलत होना वास्तव में कठिन है " क्योंकि आप बहुत ज्यादा गलत होने में व्यस्त हैं;) इसके अलावा, वल्कन में प्रदर्शन गलत होना अभी भी बहुत आसान है। अनावश्यक सिंक्रोनाइजेशन नहीं। केवल "सामान्य" छवि लेआउट का उपयोग करना। सबपास का लाभ नहीं ले रहे हैं। बार-बार पाइप लाइन बदलती है। इत्यादि। उल्लेख नहीं है, विभिन्न विक्रेता इस बात पर भी सहमत नहीं हैं कि वल्कन का उपयोग कैसे किया जाए।
निकोल बोलस

2
@DanHulme: कितना आसान है आधुनिक ओपन उपयोग करने के लिए है के रूप में, मैं मेरा सबसे अच्छा करने के लिए इसे आसान बनाने के । अगर लोग नेह जैसे कचरा साइटों से सीखने पर जोर देते हैं, या यादृच्छिक प्रलेखन को पढ़कर, तो यह कुछ ऐसा नहीं है जो किसी की मदद कर सकता है। आप घोड़ों को पानी में ले जा सकते हैं, लेकिन आप उन्हें नहीं पी सकते।
निकोल बोल

7

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


मैं शर्त लगाता हूं कि अगर OSX कभी वल्कन का समर्थन करेगा तो यह इसके केवल एक छोटे उपसमूह का समर्थन करेगा, और वह वेब ब्राउज़र के लिए अगली पीढ़ी का ग्राफिक्स एपी भी बन जाएगा, ओपनगेल अभी भी उपयोग करने के लिए सरल है (निश्चित रूप से कुछ हद तक) वल्कन, पाइप लाइन को रेंडर करने में सादगी में जो अशिष्टता है, वह इसे अन्य सामान की स्पष्ट हैंडलिंग में खो देती है
GameDeveloper

1
@DarioOO OpenGL तत्काल मोड, जो भी आप-कॉल-द-चीज़-द-नॉट-तत्काल-मोड की तुलना में उपयोग करने के लिए सरल है, फिर भी यह अनुशंसित नहीं है।
user253751

1
@ गेविन: यह ध्यान दिया जाना चाहिए कि ओपन 5 संस्करण 4.2 या अधिक ओएसएक्स पर समर्थित नहीं हैं। तो अगर आप कुछ भी उपयोग करना चाहते हैं हाल पर OSX ओपन से, आप नहीं कर सकते। और Apple बाद के OpenGL संस्करणों को अपनाने की अत्यधिक संभावना नहीं है। Apple प्लेटफ़ॉर्म धातु में ऑल-इन है, इसलिए क्रॉस-प्लेटफ़ॉर्म या तो एक बस्ट है।
निकोल बोलस

जब तक वे मजबूर नहीं होते हैं, तब तक Apple वल्कन का समर्थन नहीं करेगा और इसका अर्थशास्त्र बहुत सरल है। सभी धातु पर जाकर, वे मोबाइल गेम डेवलपर्स में लॉक करने की उम्मीद करते हैं जिन्हें GLES2 से अधिक की आवश्यकता हो सकती है, लेकिन उनके पास वल्कन और मेटल दोनों के लिए अपने गेम लिखने के लिए संसाधन नहीं हैं। वे इसके लिए मैक के छोटे गेमिंग इकोसिस्टम का त्याग करने के लिए तैयार हैं, खासकर अगर iOS देवता मैक ऐप स्टोर पर भी रिलीज़ होते हैं।
जोनाथन बाल्डविन

वल्कन अब macOS
अलेक्जेंडर

4

यह आप पर निर्भर करता है की आप क्या करना चाहते हो। यदि आप केवल अपने लिए ग्राफिक्स प्रोग्रामिंग सीखना चाहते हैं, तो यह वास्तव में मायने नहीं रखता कि आप क्या चुनते हैं।

यदि आप पेशेवर काम के बारे में सोच रहे हैं तो मैं वल्कन की सलाह देता हूं। यह हार्डवेयर के करीब है और मुझे लगता है कि ग्राफिक्स प्रोग्रामर के लिए हार्डवेयर क्या महत्वपूर्ण है, इसके बारे में ज्ञान है।

वल्कन हार्डवेयर के करीब है क्योंकि ओपनजीएल हुड के तहत बहुत सारे सामान करता है जो कि वुलकान में आप मैन्युअल रूप से करते हैं, जैसे कि रजिस्ट्री को निष्पादित करना। इसके अलावा मैमोरी मैनेजमेंट एप्लिकेशन है जो ड्राइवर नहीं है। आपको uniformsउन्हें ट्रैक करने के बारे में मेमोरी के लिए चिंता करने की आवश्यकता है (चर जो आप सीपीयू से जीपीयू से गुजरते हैं)। आपके पास चिंता करने के लिए अधिक चीजें हैं लेकिन यह स्मृति के उपयोग पर अधिक स्वतंत्रता देता है। यह डरावना और भारी लग सकता है लेकिन यह वास्तव में नहीं है। यह केवल अगला एपीआई है जिसे आपको सीखने की आवश्यकता है।

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

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


2

मैं कुछ महीनों के लिए "प्रोग्रामिंग प्रोग्रामिंग" कर रहा हूं।

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

वल्कन के दावों के साथ एक और समस्या यह है कि यह कैसे बेहतर होने का दावा करता है। जबकि OpenGL निश्चित रूप से बहुत बार अपनी वेबसाइट को अपडेट नहीं कर रहा है। वे लगातार अपडेट जारी करते रहते हैं और मैं हमेशा नए अपडेट के लिए तत्पर रहता हूं जो तेजी से चलते हैं या नए हार्डवेयर के साथ बेहतर काम करते हैं।

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

अंत में, मैं जोड़ना चाहता हूं कि एक ही क्षेत्र में विशेषज्ञता है जैसे कि मैं ज्यादातर जावा और ओपनजीएल का उपयोग करता हूं वह आश्चर्यजनक रूप से विपणन स्टैंडअलोन नहीं है। अगर मैं एक ऐसी कंपनी में नौकरी करना चाहता था जो गेम बनाती थी, तो अधिकांश भाग के लिए ओपनजीएल का उपयोग केवल लिनक्स और एंड्रॉइड डेवलपमेंट और संभवतः ओएसएक्स के लिए गेम बनाने के लिए किया जाएगा। विंडोज और कंसोल के लिए डायरेक्टएक्स <जो वालकैन कुछ मामलों में बदल सकता है।

मैं हमेशा के लिए OpenGL अपडेट के लिए रोक नहीं सकता, और मैं अभ्यस्त नहीं हूं। लेकिन यह विकास के लिए मेरी प्राथमिकता है।


" मुझे एक और समस्या वल्कन के दावों से है कि यह कैसे बेहतर होने का दावा करता है " वल्कन कुछ भी होने का दावा नहीं करता है। यह सिर्फ एक एपीआई है; यह दावा नहीं कर सकता।
निकोल बोलस

आपको एहसास है कि वल्कन और जीएल ज्यादातर एक ही लोगों द्वारा बनाए गए हैं?
दान हुल्म

हां मैं करता हूं। मैं अभी भी GL
विंटर रॉबर्ट्स

2

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

मैं आपको बताता हूं कि मुझे लगता है कि कंप्यूटर ग्राफिक्स "एक समर्थक की तरह" सीखने के लिए मेरी राय में यह सबसे अच्छा तरीका है

  1. एक समर्थक की तरह रैखिक बीजगणित और ज्यामिति जानें। इसके बिना, किसी भी फैंसी एपीआई या ग्राफिक्स को भूल जाएं
  2. कंप्यूटर ग्राफिक्स पर एक अच्छी किताब खरीदें (जैसे कंप्यूटर ग्राफिक्स के मूल तत्व )
  3. जब आप पुस्तक का अध्ययन करते हैं, तो एक प्रोग्रामिंग वातावरण सेट करें जो आपको एक छवि पर आकर्षित करने और एल्गोरिदम को लागू करने की अनुमति देता है! यह जावा 2D या C ++ और SDL या यहां तक ​​कि पायथन और Pygame हो सकता है जो इसके लिए मायने रखता है। इस स्तर पर आपको 10000 FPS प्राप्त करने की कोशिश करने से पहले कई कैमरा व्यू के साथ अपने कताई बनावट गियर प्राप्त करने की आवश्यकता है
  4. अब OpenGL, Vulkan या DirectX पर जाएं और अपने फैंसी उदाहरण को दोहराएं (ऊपर देखें)।

ड्राइविंग लाइसेंस प्राप्त करने से पहले अपनी कार के वायुगतिकी के बारे में चिंता करने से पहले एक लाइन कैसे खींचना है, यह समझने से पहले प्रदर्शन की चिंता करना शुरू करें।


0

मैं स्वयं C ++ में बिना किसी औपचारिक शिक्षा के पढ़ाया जाता हूं और पिछले 15 वर्षों में मैंने ओपन ओपन को मॉडर्न ओपनजीएल और डायरेक्टएक्स 9 सी, 10 और 11. दोनों के माध्यम से सीखा है। मैंने डायरेक्टएक्स 12 में प्रवेश नहीं किया है और मैं चाह रहा हूं वुलकन में मेरा हाथ आज़माएं। मैंने केवल एक मूल त्रिकोण या वल्कन के साथ एक साधारण कताई क्यूब खींचने के लिए कुछ बुनियादी ट्यूटोरियल पूरे किए हैं। DirectX 11 और OpenGL 3.3+ के साथ, मैंने पूरी तरह से 3D गेम इंजन पर काम करना लिखा है और यहां तक ​​कि सरल गेम बनाने के लिए भी उनका उपयोग किया है।

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

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

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

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

मैं इसका उल्लेख करता हूं क्योंकि यदि आप नहीं जानते कि आपके थ्रेड्स और एक्सेस टाइम के साथ-साथ अपनी मेमोरी को ठीक से कैसे प्रबंधित करें; वल्कन तुम गांड में काटोगे! जहाँ OpenGL और DirectX बहुत अधिक सीपीयू बिजली की खपत के माध्यम से सभी तरह से आपका हाथ पकड़ेंगे।

अब यदि आपके प्रोग्रामिंग ज्ञान का स्तर सभ्य है, और आपके पास निम्न गणित पृष्ठभूमि है, जिसमें बीजगणित, ज्यामिति, त्रिकोणमिति, बूलियन बीजगणित, संभाव्यता, सांख्यिकी, वेक्टर - मैट्रिक्स आधारित बीजगणित, गणना I, II, .... सभी स्तरों शामिल हैं। infinty (lol)। वेक्टर कैलकुलस, रेखीय बीजगणित, रैखिक समीकरणों की प्रणाली, बहु-चर गणनाओं के वेक्टर कैलकुलेट के साथ विश्लेषणात्मक ज्यामिति, संख्या और सेट सिद्धांत, डेटा सेट और संरचनाएं, कम्प्यूटेशनल विश्लेषण, कम्प्यूटेशनल और एल्गोरिथम डिजाइन। फिर आप वास्तविक गेम इंजन बनाने के लिए जो कुछ भी करते हैं, उसकी अवधारणाओं में उतर सकते हैं और यह बिना किसी एप्लाइड गणित या किसी भौतिकी समीकरण के बिना है जिसकी आपको आवश्यकता होगी। एक बार जब आपके पास पृष्ठभूमि और पर्याप्त प्रोग्रामिंग अनुभव विशेष रूप से स्मृति प्रबंधन और सूचक अंकगणित होता है तो आप अपने गेम इंजन का निर्माण शुरू कर सकते हैं।

तो यहाँ बात आपको एडवांस ग्राफिक्स प्रोग्रामिंग करने के लिए गेम इंजन बनाने में जो कुछ भी होता है उसके सभी पहलुओं को समझना होगा। यदि आप सिर्फ 2 डी ग्राफिक्स कर रहे हैं, तो जीवन बहुत कठिन नहीं है क्योंकि आप पायथन में बिना किसी उपरोक्त एपीआई के ऐसा कर सकते हैं! लेकिन अगर आप गंभीर होना चाहते हैं और एक पूर्ण विकसित पावर हाउस गेम इंजन को डिजाइन करना चाहते हैं, जो कई फीचर सेट के साथ मजबूत है, तो यहां विकल्प सी या सी ++ होगा और ओपनजीएल, डायरेक्ट एक्स या वल्कन का उपयोग करना होगा। उनमें से कोई भी ठीक होगा। अब यदि आप स्क्रैच से इंजन का निर्माण कर रहे हैं और आप कम से कम संसाधन ओवरहेड के साथ सबसे अधिक "कुशल" रनिंग इंजन की तलाश कर रहे हैं तो आप वल्कन को चुनना चाहेंगे। लेकिन अगर आप इस मार्ग पर जाते हैं, तो आपको कम से कम सब कुछ पता होना चाहिए जो मैंने ऊपर बताया था और कुछ!

तो जैसा कि आप देख सकते हैं कि वल्कन वास्तव में इस क्षेत्र में शुरुआती प्रोग्रामरों की ओर नहीं बढ़ रहा है। आपको गणित, प्रोग्रामिंग प्रतिमान, सभी विभिन्न प्रकार के डेटा सेट और एल्गोरिदम के साथ थ्रेडिंग, मेमोरी सिंक्रोनाइज़ेशन, समानांतर प्रोग्रामिंग सहित सभी का व्यापक ज्ञान होना चाहिए। और फिर भी यह है कि स्क्रीन पर एक साधारण 2 डी त्रिकोण को लोड करने के लिए आवेदन प्राप्त करना है। OpenGL में कोड की लगभग 100 लाइनों में या DirectX में कोड की 250 लाइनों में क्या किया जा सकता है, Vulkan में कोड की लगभग 1,000 लाइनें लगती हैं!

वल्कन आपके ऊपर सब कुछ छोड़ देता है क्योंकि आप अपने आवेदन में वल्कन का उपयोग करने के सभी पहलुओं के लिए जिम्मेदार हैं। कोई हाथ पकड़ना नहीं है, यह आपके रास्ते में नहीं आता है, यह आपको अपने आप को पैर में गोली मारने की अनुमति देगा या आपको खुद को एक पुनरावृत्ति नोज खरीदने की अनुमति देगा!

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

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


-1

आपको पहले OpenGL सीखना चाहिए, क्योंकि इतने सारे प्लेटफार्मों में ग्राफिक्स के लिए यह मानक है।

यहां तक ​​कि अगर एक नया पुस्तकालय है, तो मूल बातें समझना, और एक ऐसी भाषा के साथ काम करना, जो उद्योग में उपयोग किया जाता है, बहुत महत्वपूर्ण है ... खासकर जब से वल्कन वोंट का इस्तेमाल बड़ी कंपनियों में थोड़ी देर के लिए किया जाता है, तब से।

  1. कोई भी व्यक्ति अपने आप को अनुकूल नहीं बनाना चाहता है और नॉन-स्टेबल फ्रेमवर्क / लाइब्रेरी से खुद को खत्म कर सकता है।

  2. उन्हें अपने वर्तमान ओपन-जीएल प्रोग्रामर को किराए पर / फिर से प्रशिक्षित करना होगा, और इसकी कोई आवश्यकता नहीं है।


इसके अलावा, मैंने सुना है कि OpenGL, और Vulkan, बिल्कुल समान नहीं हैं। मुझे लगता है कि वल्कन एक निम्न स्तर का एपीआई है, और ओपन कोड की तुलना में मशीन कोड के करीब है।

यह उत्तर मैंने अभी पाया है कि बहुत सारी शानदार जानकारी है

https://gamedev.stackexchange.com/questions/96014/what-is-vulkan-and-how-does-it-differ-from-opengl


एक और बात जो विचार करने के लिए कुछ है, वह मुद्दा है जो ओपन 1 के साथ वापस हुआ।

OpenGL 1 से OpenGL 2 में MAJOR परिवर्तन हुए, और चूंकि बहुत से लोग OpenGL1 का उपयोग कर रहे थे, और हार्डवेयर ने इसका समर्थन किया, इसलिए कुछ अनुप्रयोगों / इंजनों में लागू करने के लिए भारी बैकवर्ड संगतता की आवश्यकता होती है, और कभी-कभी देवताओं को इसे रखने के लिए वास्तव में दर्दनाक होता है। ।

समर्थन के अलावा, भाषा इतनी स्थानांतरित हो गई, कि आपको नया सामान सीखना पड़ा।

यह JavaFX (1.x से 2.x तक) और Play जैसे चौखटे के साथ हुआ है! फ्रेमवर्क (इसके अलावा 1.x से 2.x)। ढांचे में पूर्ण परिवर्तन, जिसका अर्थ है कि हमें ... सब कुछ ...


इसलिए अनिवार्य रूप से आपको क्या करना चाहिए जब तक वल्कन स्टेबल न हो। इसका मतलब है कि 2.0 पैच तक प्रतीक्षा करें। आईटी का मतलब यह नहीं है कि आप वल्कन की मूल बातों के बारे में नहीं सीख सकते हैं, लेकिन बस यह पता है कि यह बदल सकता है। मुझे लगता है कि क्रोनोस जैसा एक समूह शुरू से ही एक बहुत ही स्थिर एपीआई प्रदान करेगा, खासकर जब से वुलकान पर काम करने वाले कई एनवीडिया और एएमडी इंजीनियर हैं, जिसमें एक उच्च एनवीडिया व्यक्ति शामिल है जो परियोजना को स्पष्ट रूप से देख रहा है, साथ ही मेंटल का आधार भी; हालाँकि, किसी भी सॉफ़्टवेयर की तरह, हम कोडर्स को देखेंगे कि यह शुरू से कितना अच्छा काम करता है, लेकिन कई लोग सावधान रहते हैं और देखते हैं कि क्या होता है।


वल्कन अभी स्थिर है। आपका जीएल 1.0 बनाम 2.0 सादृश्य उपयुक्त है। जीएल के साथ शुरू करना अब जीएल 2.0 के बाहर आने के छह महीने बाद जीएल 1.0 सीखना शुरू करने जैसा होगा।
दान हुल्म

1
वल्कन "स्थिर" हो सकता है इसका मतलब यह नहीं है कि चीजें बदल नहीं जाएंगी, यह भाषाओं की प्रकृति है, जिसे मैंने पिछले कुछ वर्षों के भीतर भाषाओं में 2 हाल के बदलाव प्रस्तुत किए हैं, इसलिए हमें कैसे पता चलेगा कि यह वल्कन के लिए नहीं होगा? आप मूल रूप से कह रहे हैं कि ओपनजीएल सीखना एक बेकार है, और यह गलत है। ऐसा लगता है कि OpenGL मृत है, और अभ्यस्त किसी भी अधिक इस्तेमाल किया जा रहा है ... इसके अलावा झूठी। इसके अलावा, मैं एकमात्र ऐसा व्यक्ति नहीं हूं जो मानता है कि वल्कन में स्थिरता के मुद्दे हो सकते हैं। यह नहीं हो सकता है, लेकिन किसी भी नई भाषा के साथ, यही आप की तलाश है।
XaolingBao

1
निश्चित रूप से चीजें बदल जाएंगी, और कार्य समूह पहले से ही अगले संस्करण के लिए नई सुविधाओं की दिशा में काम कर रहा है (ssh, आपने यह नहीं सुना है)। स्थिर का मतलब है कि उन चीजों को कल्पना में जोड़ा जाएगा, और जिन चीजों के बारे में आप सीखते हैं वे आज भी दो साल पहले मान्य होंगे। ओटीओएच, आज आप जीएल के बारे में जो चीजें सीखते हैं, वे पहले से ही जीपीयू कैसे काम करते हैं, इसके लिए एक खराब मैच है: ठीक उसी तरह जैसे कि प्रोग्रामेबल-शेडर दुनिया में फिक्स्ड-फंक्शन पाइपलाइन के बारे में सीखना। यदि आप मेरा जवाब पढ़ते हैं, तो आप देखते हैं कि मुझे नहीं लगता कि अब जीएल सीखना बेकार है। लेकिन "वल्कन बहुत नया है" इसे छूट देने का एक अच्छा कारण नहीं है।
दान हुल्म

1
@Lasagna: " यह है कि यह परिवर्तन के अधीन है, न कि कई कंपनियां इसे तुरंत उपयोग करने के लिए अनुकूल होंगी " वाल्व। महाकाव्य। एकता। उन सभी को अपने इंजनों को वल्कन पर काम करने में भारी निवेश किया जाता है। क्रायटेक और आईडी बिलकुल भी इसकी अनदेखी नहीं कर रहे हैं। अतः आपका कथन तथ्यों के अनुरूप नहीं है।
निकोल बोलस

2
@Lasagna: " सिर्फ इसलिए कि इसे 3 डी इंजन में रूपांतरित किया जा रहा है, इसका मतलब यह नहीं है कि कंपनियां अपनी परियोजनाओं में निवेश कर रही हैं " ... इसलिए 3 डी इंजन "प्रोजेक्ट" के रूप में योग्य नहीं हैं? क्या DOTA2 को "प्रोजेक्ट" के रूप में गिना जाता है? क्योंकि इसे अभी वल्कन के लिए समर्थन मिला है । क्या सैमसंग के स्मार्टफोन और टैबलेट की लाइन "प्रोजेक्ट" के रूप में गिनी जाती है? क्योंकि वे इसे यूआई में शामिल करना चाहते हैं। वास्तविकता यह है कि बहुत से लोग "एक नए प्लेटफ़ॉर्म का परीक्षण करने के लिए एक होना चाहते हैं", यदि वह प्लेटफ़ॉर्म उन्हें वह मिलता है जिसकी उन्हें आवश्यकता है।
निकोल बोलस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.