استخدِم الوظائف التالية لاستخدام Android Frame Pacing مع محرّك عرض استنادًا إلى واجهة برمجة تطبيقات OpenGL ES.
الإعداد والتدمير
استخدم الدوال التالية لتهيئة وإتلاف مثيل من معدل سرعة إطار Android على التوالي:
بشكل عام، يجب طلب الرمز SwappyGL_init()
في أقرب وقت ممكن أثناء تسلسل بدء تشغيل المحرّك، ويجب طلب SwappyGL_destroy()
عند الخروج من اللعبة. لن تحتاج إلى طلب هذه الطرق في أي وقت آخر.
ضبط الفاصل الزمني للتبديل وفترة إعادة التحميل
استخدِم الدوال التالية لضبط مثيل لنظام سرعة إطارات Android:
void SwappyGL_setSwapIntervalNS(uint64_t swap_ns);
void SwappyGL_setFenceTimeoutNS(uint64_t fence_timeout_ns);
void SwappyGL_setUseAffinity(bool tf);
عند استدعاء SwappyGL_setSwapIntervalNS()
، مرر المدة التي يجب
تقديم الإطار فيها. في معظم الحالات، يمكنك استخدام أحد الثوابت التالية:
SWAPPY_SWAP_60FPS
أو SWAPPY_SWAP_30FPS
أو SWAPPY_SWAP_20FPS
.
بشكل عام، يجب طلب هذه الطرق مباشرةً بعد الاتصال بالرقم SwappyGL_init()
. ومع ذلك، قد تحتاج أيضًا إلى استدعاء هذه الطرق في
أوقات أخرى أثناء تنفيذ لعبتك.
إعداد ANativeWindow
يحتاج Swappy إلى الاسم المعرِّف ANativeWindow
كي ينفّذ عملية
ANativeWindow
خاصة، مثل طلب
ANativeWindow_setFrameRate()
.
يمكنك الاتصال بالرقم
SwappyGL_setWindow()
عندما يتم تغيير سطح شاشة Android وعندما يتوفّر لديك اسم معرِّف جديد
ANativeWindow
(يمكنك الاطّلاع على نموذج كرة القدم للحصول على مثال).
الأوضاع التلقائية
تضبط ميزة Frame Pacing مدة التبديل ووضع مسار الإحالة الناجحة استنادًا إلى متوسط مدة اللقطات السابقة. يمكنك التحكم في هذا السلوك باستخدام الدوال التالية:
void SwappyGL_setAutoSwapInterval(bool enabled);
void SwappyGL_setMaxAutoSwapIntervalNS(uint64_t max_swap_ns);
void SwappyGL_setAutoPipelineMode(bool enabled);
تنفيذ التبديل حسب الإطار
خلال كل إطار عرض، استدعِ bool SwappyGL_swap(EGLDisplay display, EGLSurface surface)
.
تتيح هذه الطريقة استخدام طريقة eglSwapBuffers()
من Open GL ES، لذا يجب استبدال جميع مثيلات eglSwapBuffers()
في لعبتك بـ SwappyGL_swap()
.
وظائف الأدوات المساعدة
تتحقّق الطريقة التالية مما إذا تم تفعيل ميزة "ضبط سرعة الإطارات في Android" أم لا:
من الممكن ألا يتمكن مثيل Android Frame Pacing من تهيئة نفسه لأي من الأسباب التالية:
- وظائف EGL الضرورية غير موجودة على الجهاز.
- لقد ضبط النظام السمة
swappy.disable
.
في أي من هاتين الحالتَين، يعرض SwappyGL_isEnabled()
القيمة false
، ومن
الأفضل بالنسبة إليك تنفيذ استراتيجية بديلة بوتيرة اللقطات.