रेंडर करना बंद करें और पुनर्प्राप्त करने योग्य स्थिति दिखाएं
कैनवास पर webglcontextlost को सुनें, जब आप पुनर्स्थापना का समर्थन करना चाहते हैं तो डिफ़ॉल्ट व्यवहार को रोकें, और संदर्भ अनुपलब्ध होने पर ड्रॉ कॉल जारी करना बंद करें। यदि पुनर्प्राप्ति में समय लग सकता है, तो खिलाड़ी को एक संयमित संदेश दें, लेकिन वर्तमान गेम स्थिति को बनाए रखें और इसे एक नए स्तर या खोई हुई बचत के रूप में मानने से बचें।
संसाधन विवरण—जैसे स्रोत छवि, शेडर टेक्स्ट और बफ़र डेटा—वेबजीएल हैंडल से स्वतंत्र रूप से उपलब्ध रखें। पुनर्स्थापना पर, उन विवरणों से GPU ऑब्जेक्ट का एक नया सेट बनाएं, attributes और uniforms को फिर से कनेक्ट करें, व्यूपोर्ट को पुनर्स्थापित करें और स्थिति रेंडर करें, फिर एक छोटे से ज्ञात दृश्य के सही ढंग से खींचने के बाद ही फिर से शुरू करें।
वास्तविक बातचीत के दौरान हानि का अनुकरण करें
दृश्य लोड होने के बाद हानि को ट्रिगर करने के लिए विकास के दौरान WEBGL_lose_context एक्सटेंशन का उपयोग करें। जब कोई बनावट जोड़ी जा रही हो, जब खिलाड़ी चल रहा हो, और एक दृश्यमान टैब पर लौटने के बाद टेस्ट का संदर्भ खो रहा हो। पुष्टि करें कि पुनर्स्थापना पथ प्रत्येक आवश्यक संसाधन को फिर से बनाता है और किसी भी लंबित अतुल्यकालिक लोड को या तो सुरक्षित रूप से पुन: लागू किया जाता है या छोड़ दिया जाता है।
एमडीएन हानि घटना और परीक्षण एक्सटेंशन का दस्तावेजीकरण करता है। विफल ग्राफ़िक्स ऑपरेशन को सामान्य शेडर या एसेट त्रुटि के रूप में व्याख्या करने से पहले isContextLost() की भी जांच करें। विकास निदान में जो हुआ उसे रिकॉर्ड करें ताकि पुनर्प्राप्ति बग को सामान्य रेंडरिंग विफलता से अलग किया जा सके।
WebGL संदर्भ हानि खेल से जुड़े सवाल
क्या संदर्भ पुनर्स्थापन से मेरी बनावट वापस आ जाती है?
नहीं, नए संदर्भ को नए GPU संसाधनों की आवश्यकता के रूप में मानें। स्रोत डेटा को सुरक्षित रखें या इसे पुनः लोड करने का एक तरीका, फिर संदर्भ बहाल होने पर बनावट और अन्य वस्तुओं को फिर से बनाएं।
मैं वास्तविक विफलता की प्रतीक्षा किए बिना संदर्भ हानि का परीक्षण कैसे कर सकता हूं?
एमडीएन का वेबग्लकॉन्टेक्स्टलॉस्ट दस्तावेज़ WEBGL_lose_context एक्सटेंशन को प्रदर्शित करता है, जो जानबूझकर नुकसान को ट्रिगर कर सकता है ताकि आप पुनर्प्राप्ति पथ का उपयोग कर सकें।
आगे पढ़ें
कोई पुरानी जानकारी दिखी? सुधार की जानकारी दें