إضافة دوال وتيرة الإطار

استخدِم الدوال التالية لاستخدام Android Frame Pacing مع محرّك عرض يعتمد على واجهة برمجة التطبيقات OpenGL ES.

الإعداد والإزالة

استخدِم الدالتَين التاليتَين لتهيئة مثيل من Android Frame Pacing وإتلافه، على التوالي:

بشكل عام، يجب استدعاء SwappyGL_init() في أقرب وقت ممكن أثناء تسلسل بدء تشغيل المحرّك، ويجب استدعاء SwappyGL_destroy() عند الخروج من اللعبة. ولن تحتاج إلى استدعاء هذه الطرق في أي وقت آخر.

ضبط الفاصل الزمني للتبديل وفترة إعادة التحميل

استخدِم الدوال التالية لضبط مثيل من Android Frame Pacing:

عند الاتصال بـ SwappyGL_setSwapIntervalNS()، مرِّر المدة التي يجب أن يتم فيها عرض إطار. في معظم الحالات، يمكنك استخدام إحدى الثوابت التالية: SWAPPY_SWAP_60FPS أو SWAPPY_SWAP_30FPS أو SWAPPY_SWAP_20FPS.

بشكل عام، يجب استدعاء هذه الطرق مباشرةً بعد استدعاء SwappyGL_init(). ومع ذلك، قد تحتاج أيضًا إلى استدعاء هذه الطرق في أوقات أخرى أثناء تنفيذ لعبتك.

ضبط ANativeWindow

يحتاج Swappy إلى معرّف ANativeWindow لتنفيذ عملية خاصة بـ ANativeWindow، مثل استدعاء ANativeWindow_setFrameRate(). يجب استدعاء SwappyGL_setWindow() عندما تتغيّر مساحة العرض على Android ويكون لديك معرّف ANativeWindow جديد (راجِع مثال Bouncyball للاطّلاع على مثال).

الأوضاع التلقائية

يعدّل Android Frame Pacing مدة التبديل ووضع مسار العرض استنادًا إلى متوسط مدة اللقطات السابقة. يمكنك التحكّم في هذا السلوك باستخدام الدالتين التاليتين:

تنفيذ عملية التبديل لكل إطار

أثناء كل إطار عرض، استدعِ الدالة bool SwappyGL_swap(EGLDisplay display, EGLSurface surface). تتضمّن هذه الطريقة طريقة eglSwapBuffers() من Open GL ES، لذا عليك استبدال جميع مثيلات eglSwapBuffers() في لعبتك بطريقة SwappyGL_swap().

الدوال المساعدة

تتحقّق الطريقة التالية مما إذا كانت ميزة "مزامنة اللقطات في Android" مفعَّلة:

من المحتمل ألا يتمكّن مثيل Android Frame Pacing من تهيئة نفسه لأي من الأسباب التالية:

  • لا تتوفّر وظائف EGL اللازمة على الجهاز.
  • ضبط النظام للسمة swappy.disable

في أيّ من هاتين الحالتين، تعرض الدالة SwappyGL_isEnabled() القيمة false، ومن الأفضل لك تنفيذ استراتيجية بديلة لتحديد سرعة عرض اللقطات.