Thêm các hàm tốc độ khung hình

Sử dụng các hàm sau để áp dụng Android Frame Pacing (Tốc độ khung hình Android) với công cụ kết xuất hình ảnh (engine render) dựa trên API OpenGL ES.

Khởi tạo và huỷ

Dùng các hàm sau để khởi tạo và huỷ một phiên bản (instance) Android Frame Pacing, theo thứ tự:

Nhìn chung, bạn nên gọi SwappyGL_init() càng sớm càng tốt trong quá trình khởi động công cụ, còn khi trò chơi sắp thoát thì bạn nên gọi SwappyGL_destroy(). Không phải lúc nào bạn cũng cần gọi các phương thức này.

Định cấu hình khoảng thời gian hoán đổi và làm mới

Sử dụng các hàm sau để định cấu hình instance Android Frame Pacing:

Khi gọi SwappyGL_setSwapIntervalNS(), hãy truyền vào thời lượng mà một khung hình sẽ được hiển thị. Trong hầu hết trường hợp, bạn có thể sử dụng một trong các hằng số sau: SWAPPY_SWAP_60FPS, SWAPPY_SWAP_30FPS hoặc SWAPPY_SWAP_20FPS.

Nhìn chung, bạn nên gọi trực tiếp cho các phương thức này sau khi gọi đến SwappyGL_init(). Tuy nhiên, bạn cũng có thể cần phải gọi các phương thức này vào các thời điểm khác trong quá trình thực thi trò chơi.

Cài đặt ANativeWindow

Swappy cần handle của ANativeWindow để thực hiện ANativeWindow thao tác cụ thể, chẳng hạn như gọi ANativeWindow_setFrameRate(). Gọi SwappyGL_setWindow() khi bề mặt màn hình Android của bạn đã thay đổi và bạn có một handle ANativeWindow mới (xem mẫu Bouncyball để tìm hiểu ví dụ).

Các chế độ tự động

Android Frame Pacing điều chỉnh thời lượng hoán đổi và chế độ quy trình dựa trên thời lượng trung bình của các khung trước. Bạn có thể kiểm soát hành vi này bằng các hàm sau:

Thực hiện hoán đổi từng khung hình

Trong mỗi khung hình kết xuất, hãy gọi bool SwappyGL_swap(EGLDisplay display, EGLSurface surface). Phương thức này bao bọc phương thức eglSwapBuffers() từ Open GL ES, vì vậy bạn nên thay thế tất cả các instance của eglSwapBuffers() trong trò chơi của mình bằng SwappyGL_swap().

Các hàm tiện ích

Phương thức sau đây sẽ kiểm tra xem bạn đã bật Android Frame Pacing hay chưa:

Có thể xảy ra trường hợp một instance Android Frame Pacing không thể tự khởi chạy vì bất kỳ lý do nào sau đây:

  • Các hàm EGL cần thiết bị thiếu trên thiết bị.
  • Hệ thống đã đặt thuộc tính swappy.disable.

Trong cả hai trường hợp này, SwappyGL_isEnabled() sẽ trả về false và tốt nhất là bạn nên triển khai một chiến lược kiểm soát tốc độ khung hình khác.