הוספת פונקציות של קצב ניצול הפריימים

אפשר להשתמש בפונקציות הבאות כדי להשתמש ב-Android Frame Pacing עם מנוע רינדור שמבוסס על OpenGL ES API.

הפעלה והשמדה

אפשר להשתמש בפונקציות הבאות כדי לאתחל ולהרוס מופע של 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(). ‫Call SwappyGL_setWindow() כשמשטח התצוגה ב-Android משתנה ויש לכם נקודת אחיזה חדשה של ANativeWindow (דוגמה אפשר לראות בBouncyball sample).

מצבים אוטומטיים

ב-Android, התכונה 'התאמת קצב הפריימים' משנה את משך ההחלפה ואת מצב צינור העיבוד על סמך משך הזמן הממוצע של הפריימים הקודמים. אפשר לשלוט בהתנהגות הזו באמצעות הפונקציות הבאות:

ביצוע החלפה לכל פריים

במהלך כל פריים של רינדור, קוראים ל-bool SwappyGL_swap(EGLDisplay display, EGLSurface surface). השיטה הזו עוטפת את השיטה eglSwapBuffers() מ-Open GL ES, ולכן צריך להחליף את כל המופעים של eglSwapBuffers() במשחק ב-SwappyGL_swap().

פונקציות בסיסיות

השיטה הבאה בודקת אם התכונה 'התאמת קצב הפריימים ב-Android' מופעלת:

יכול להיות שמופע של Android Frame Pacing לא מצליח לבצע אתחול בגלל אחת מהסיבות הבאות:

  • במכשיר חסרות הפונקציות הנדרשות של EGL.
  • המערכת הגדירה את המאפיין swappy.disable.

בכל אחד מהמקרים האלה, הפונקציה SwappyGL_isEnabled() מחזירה false, ועדיף להטמיע שיטה חלופית להצגת פריימים.