توقف عن العرض وأظهر حالة قابلة للاسترداد
استمع إلى webglcontextlost على اللوحة القماشية، وامنع السلوك الافتراضي عندما تنوي دعم الاستعادة، وتوقف عن إصدار استدعاءات السحب عندما يكون السياق غير متاح. امنح اللاعب رسالة مقيدة إذا كان التعافي قد يستغرق وقتًا، لكن احتفظ بحالة اللعبة الحالية وتجنب التعامل مع هذا كمستوى جديد أو عملية حفظ مفقودة.
احتفظ بأوصاف الموارد - مثل الصورة المصدر، ونص shader، وبيانات المخزن المؤقت - متاحة بشكل مستقل عن مقابض WebGL. عند الاستعادة، قم بإنشاء مجموعة جديدة من كائنات GPU من تلك الأوصاف، وأعد توصيل السمات ومتغيرات uniform، واستعيد إطار العرض وحالة العرض، ثم استأنف فقط بعد رسم مشهد صغير معروف بشكل صحيح.
محاكاة الخسارة أثناء التفاعل الحقيقي
استخدم ملحق WEBGL_lose_context أثناء التطوير لتحفيز الخسارة بعد تحميل المشهد. اختبر فقدان السياق أثناء إضافة قوام، وأثناء تحرك المشغل، وبعد العودة إلى علامة تبويب مرئية. تأكد من أن مسار الاستعادة يعيد إنشاء كل الموارد المطلوبة وأن أي تحميل غير متزامن معلق سيتم إعادة تطبيقه أو التخلص منه بأمان.
تقوم MDN بتوثيق حدث الخسارة وامتداد الاختبار. تحقق أيضًا من isContextLost() قبل تفسير عملية رسومات فاشلة على أنها تظليل عادي أو خطأ في الأصول. قم بتسجيل ما حدث في تشخيصات التطوير حتى يمكن تمييز خطأ الاسترداد عن فشل العرض العادي.
أسئلة عن لعبة فقدان السياق WebGL
هل تعيد استعادة السياق القوام الخاص بي مرة أخرى؟
لا، تعامل مع السياق الجديد على أنه يحتاج إلى موارد GPU جديدة. احتفظ ببيانات المصدر أو طريقة لإعادة تحميلها، ثم أعد إنشاء القوامات والكائنات الأخرى عند استعادة السياق.
كيف يمكنني اختبار فقدان السياق دون انتظار فشل حقيقي؟
توضح وثائق webglcontextlost الخاصة بشركة MDN امتداد WEBGL_lose_context، والذي يمكن أن يؤدي إلى الخسارة عمدًا حتى تتمكن من ممارسة مسار الاسترداد.
للمزيد من القراءة
هل لاحظت معلومة قديمة؟ الإبلاغ عن تصحيح