क्या 2D गेम / एप्स के लिए 2D- Canvas के बजाय WebGL का उपयोग करने के अलावा, कोई कारण नहीं है ?
दूसरे शब्दों में, WebGL द्वारा 2 डी फंक्शंस की पेशकश की जाती है जो 2D-कैनवस के साथ आसानी से प्राप्त करना संभव नहीं है?
क्या 2D गेम / एप्स के लिए 2D- Canvas के बजाय WebGL का उपयोग करने के अलावा, कोई कारण नहीं है ?
दूसरे शब्दों में, WebGL द्वारा 2 डी फंक्शंस की पेशकश की जाती है जो 2D-कैनवस के साथ आसानी से प्राप्त करना संभव नहीं है?
जवाबों:
इस सवाल को दूसरी तरफ से देखते हुए:
एक डेवलपर दूसरे पर एक तकनीक का चयन कैसे करता है?
तो मैं इन गुणों के बारे में कैनवास और वेबजीएल एपीआई के बीच अंतर पर चर्चा करूँगा।
कैनवास और वेबजीएल दोनों जावास्क्रिप्ट एपीआई हैं। वे एकीकरण (बंधन) के बारे में बहुत समान हैं। वे दोनों कई पुस्तकालयों द्वारा समर्थित हैं जो आपकी कोडिंग को गति दे सकते हैं। अलग-अलग लाइब्रेरी आपको अपने कोड को व्यवस्थित करने के लिए अलग-अलग तरीके देती हैं, इसलिए लाइब्रेरी पसंद यह निर्धारित करती है कि आपके ड्राइंग एपीआई कैसे संरचित हैं, लेकिन यह अभी भी बहुत समान है (बाकी कोड कैसे इसे एक साथ बांधता है)। यदि आप लाइब्रेरी का उपयोग करते हैं, तो कोड लिखने में आसानी लाइब्रेरी पर ही निर्भर करती है।
यदि आप शून्य से कोड लिखते हैं, तो कैनवास एपीआई सीखना और समझना बहुत आसान है। इसके लिए न्यूनतम गणित ज्ञान की आवश्यकता होती है, और विकास तेज और सीधा होता है।
WebGL API के साथ काम करने के लिए मजबूत गणित कौशल और रेंडरिंग पाइपलाइन की पूरी समझ की आवश्यकता होती है। इन कौशल वाले लोग कठिन हैं, उत्पादन धीमा है (इस तरह के कोड आधार के आकार और जटिलता के कारण), और इसलिए इसकी लागत अधिक है।
WebGL तेज है और इसमें अधिक क्षमताएं हैं। उसके बारे मे कोई शक नहीं। यह एक देशी 3 डी एपीआई है जो आपको रेंडरिंग पाइपलाइन तक पूर्ण पहुंच प्रदान करता है, कोड और प्रभाव तेजी से निष्पादित होते हैं और अधिक 'ट्विकेबल' होते हैं। WebGL के साथ वास्तव में कोई सीमा नहीं है।
दोनों कैनवास और वेबजीएल html5 उपहार हैं। आमतौर पर एक का समर्थन करने वाले उपकरण समर्थन करेंगे और दूसरे को।
इसलिए योग करने के लिए:
उम्मीद है की यह मदद करेगा।
PS चर्चा के लिए खुला।
सबसे बड़ा लाभ पाइपलाइन की कार्यक्रमशीलता, और प्रदर्शन है। उदाहरण के लिए, मान लें कि आप 2 बक्से एक के ऊपर एक खींच रहे हैं और एक छिपा हुआ है, कुछ जीएल कार्यान्वयन में छिपे हुए बॉक्स को छोड़ने की गुंजाइश है।
तुलना के लिए, चूंकि यहां एक तालिका बनाने का कोई त्वरित तरीका नहीं है, मैंने बस तुलना तालिका की एक तस्वीर नीचे अपलोड की है। केवल पूर्णता के लिए तीन.js जोड़े।
अपने स्वयं के अनुप्रयोगों पर अनुभव से बोलते हुए , ग्राफिक्स शेड एक और एक ही कारण रहा है जो मुझे WebGL के लिए समर्थन की आवश्यकता है। उपयोग में आसानी मेरे लिए बहुत कम असर डालती है क्योंकि दोनों रूपरेखाओं को तीन.js के साथ अलग किया जा सकता है। यह मानते हुए कि मुझे शेड की आवश्यकता नहीं है, मैं ब्राउज़र / मशीन समर्थन को अधिकतम करने के लिए या तो फ्रेमवर्क के उपयोग की अनुमति देता हूं।
WebGL क्या 2D क्षमता प्रदान करता है जो 2D कैनवास नहीं करता है? सबसे बड़ा एक IMHO ग्राफिक्स हार्डवेयर पर प्रोग्राम करने योग्य टुकड़ा है। उदाहरण के लिए, WebGL में, कोई भी आपके 3D हार्डवेयर पर एक छायादार में कॉनवे के गेम ऑफ़ लाइफ को लागू कर सकता है:
http://glslsandbox.com/e#207.3
इस तरह का 2D डिस्प्ले केवल CPU पर ही चलेगा, GPU के साथ, 2D कैनवास के साथ नहीं। सभी संगणनाएँ जावास्क्रिप्ट में लागू की जाएंगी, और वेब कर्मचारियों की सहायता से GPU के समान समानांतर नहीं होगी। यह निश्चित रूप से सिर्फ एक उदाहरण है, सभी प्रकार के दिलचस्प 2 डी प्रभाव shaders के साथ लागू किए जा सकते हैं।
खैर, प्रदर्शन सबसे बड़े कारणों में से एक होगा क्योंकि जब आप किसी गेम को कोड कर रहे होते हैं, तो उसे तेज होना पड़ता है। लेकिन कुछ अन्य कारण हैं जिनके लिए आप कैनवास पर WebGL चुनना चाहते हैं। यह शेड्स, लाइटिंग और जूमिंग को कोड करने की संभावना प्रदान करता है, जो कि अगर आप कमर्शियल गेम ऐप कर रहे हैं तो यह महत्वपूर्ण है। इसके अलावा 50 स्प्रिट या इतने के बाद कैनवास पिछड़ जाता है।
ऐसा कुछ भी नहीं है जो आप कैनवस के साथ नहीं कर सकते हैं जो आप webGL के साथ नहीं कर सकते: कैनवास get / putImageData के साथ बाइट्स को कुचलने की अनुमति देता है, और आप वेबजीएल के साथ प्रोग्राम, लाइन, ड्रॉ कर सकते हैं ...।
लेकिन अगर आप काफी कुछ ड्रॉइंग, और 60 एफपीएस पर भी कुछ प्रभाव डालना चाहते हैं, तो प्रदर्शन अंतर इतना अधिक है कि यह कैनवास के साथ संभव नहीं होगा, जब यह वेबजीएल में ठीक चलेगा। प्रदर्शन एक मूल विशेषता है।
फिर भी वेबजीएल कार्यक्रम के लिए काफी जटिल है: देखें कि क्या कैनवास आपके लिए काफी अच्छा है या एक पुस्तकालय की तलाश करें जो दर्द को कम करेगा ...
अन्य दोष: यह आईई पर काम नहीं करता है (लेकिन क्या करता है?), और कुछ मोबाइलों पर।
संगतता के लिए यहां देखें: http://caniuse.com/webgl
जैसा कि आप विशेष रूप से कुछ क्लासिक 2 डी चीजें चाहते हैं जो कैनवास के साथ अच्छी तरह से काम नहीं करते हैं:
... लेकिन निश्चित रूप से आपके पास पिक्सेल एक्सेस है, इसलिए आप उपरोक्त सहित, मैन्युअल रूप से वास्तव में कुछ भी कर सकते हैं। लेकिन यह वास्तव में, वास्तव में धीमा हो सकता है। आप सिद्धांत रूप में कैनवास को प्रस्तुत करने के लिए मेसा ओपनग्लास को emscripten कर सकते हैं।
WebGL का उपयोग करने का एक और बड़ा कारण यह होगा कि इसका परिणाम कहीं और पोर्ट करना बहुत आसान है। जो कौशल को और अधिक मूल्यवान बनाता है।
कैनवास का उपयोग करने के कारणों में यह है कि यह अभी भी बेहतर समर्थित है और यदि आप पिक्सेल द्वारा चीजों को पिक्सेल करना सीखते हैं जो एक बहुत ही मूल्यवान सबक भी है।
जैसा कि WebGL विशेष रूप से नई तकनीक है और HTML5 कैनवस अधिक स्थापित है जिसे आप उपयोग करना चाहते हैं यह आपके उपयोगकर्ताओं पर निर्भर करता है। अगर आपको लगता है कि आपके उपयोगकर्ता मोबाइल उपकरणों का उपयोग करेंगे, तो मैं एचटीएमएल 5 कैनवास का सुझाव दूंगा लेकिन यदि आप बेहतर 2 डी प्रतिपादन चाहते हैं तो मैं वेबजीएल का उपयोग करूंगा। तो आप क्या कर सकते हैं यदि उपयोग एचटीएमएल 5 के साथ मोबाइल रेंडर पर हो, तो वे वेबलॉग का समर्थन करने वाले प्लेटफॉर्म पर हों।
उदाहरण के लिए:
if (window.WebGLRenderingContext) {
webGLcanvasApp()
} else if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
html5CanvasAppFMobile()
} else {
html5CanvasApp()
}
स्रोत:
WebGL समर्थन का पता लगाने का उचित तरीका?
JQuery में मोबाइल डिवाइस का पता लगाने का सबसे अच्छा तरीका क्या है?
GPU के बिना WebGL बेकार है।
यह हार्डवेयर निर्भरता एक बड़ी समस्या नहीं है क्योंकि अधिकांश सिस्टम में GPU हैं, लेकिन यदि GPU या CPU आर्किटेक्चर कभी विकसित होते हैं, तो अनुकरण द्वारा वेबलॉग सामग्री को संरक्षित करना चुनौतीपूर्ण हो सकता है। पुराने (वर्चुअलाइज्ड) कंप्यूटरों पर इसे चलाना समस्याग्रस्त है।
लेकिन "कैनवस बनाम वेबजीएल" को एक द्विआधारी विकल्प नहीं होना चाहिए। मैं वास्तव में प्रभाव के लिए वेबलॉग का उपयोग करना पसंद करता हूं, लेकिन बाकी को कैनवास में करना। जब मैं इसे एक वीएम में चलाता हूं, यह अभी भी अच्छी तरह से और तेजी से काम करता है, बस प्रभाव के बिना।