เพิ่มฟังก์ชันการกำหนดอัตราเฟรมเฟรม

ใช้ฟังก์ชันต่อไปนี้เพื่อใช้ 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() โทร SwappyGL_setWindow() เมื่อพื้นผิวการแสดงผลของ Android เปลี่ยนไปและคุณมีแฮนเดิล ANativeWindow ใหม่ (ดูตัวอย่างได้ในตัวอย่าง Bouncyball)

โหมดอัตโนมัติ

การเว้นระยะเฟรมของ Android จะปรับระยะเวลาการสลับและโหมดไปป์ไลน์ตาม ระยะเวลาเฉลี่ยของเฟรมก่อนหน้า คุณควบคุมลักษณะการทำงานนี้ได้ด้วยฟังก์ชันต่อไปนี้

สลับเฟรมทีละเฟรม

เรียกใช้ bool SwappyGL_swap(EGLDisplay display, EGLSurface surface) ในระหว่างเฟรมการแสดงผลแต่ละเฟรม เมธอดนี้จะรวมเมธอด eglSwapBuffers() จาก Open GL ES ไว้ด้วย ดังนั้นคุณควร แทนที่อินสแตนซ์ทั้งหมดของ eglSwapBuffers() ในเกมด้วย SwappyGL_swap()

ฟังก์ชันยูทิลิตี

วิธีต่อไปนี้จะตรวจสอบว่าเปิดใช้ Android Frame Pacing หรือไม่

เป็นไปได้ว่าอินสแตนซ์ของ Android Frame Pacing เริ่มต้นตัวเองไม่ได้เนื่องจากสาเหตุใดสาเหตุหนึ่งต่อไปนี้

  • อุปกรณ์ไม่มีฟังก์ชัน EGL ที่จำเป็น
  • ระบบได้ตั้งค่าพร็อพเพอร์ตี้ swappy.disable แล้ว

ในสถานการณ์ใดก็ตาม SwappyGL_isEnabled() จะส่งคืน false และคุณควรใช้กลยุทธ์การเว้นระยะเฟรมอื่นแทน