Tôi đang phát triển trò chơi iP * và tôi sử dụng cả UIKit và OpenGL ES 2.0. Các phần tử UIKit được hiển thị trên khung nhìn OpenGL và chiếm một không gian màn hình đáng kể (tùy ý). Tôi phải thừa nhận rằng Apple đã thực hiện một công việc tuyệt vời và tốc độ khung hình của trò chơi luôn là 60 FPS.Kết hợp các khối hoạt ảnh UIView và hiển thị OpenGL ES
Để đi đến kết luận này tôi đã thực hiện nhiều xét nghiệm liên quan đến việc thực hiện:
- tôi đã thêm rất nhiều tĩnh (không di chuyển) UIViews trên quan điểm OpenGL - OK!
- Tôi hoạt ảnh bằng mã tùy chỉnh cùng UIViews (đã sửa đổi thuộc tính trung tâm trong phương thức drawFrame của trò chơi của tôi) - OK !.
- Tôi đã thêm nhiều phần tử OpenGL ES trong UIViews - OK!
- Tôi đã thêm nhiều phần tử OpenGL ES đang di chuyển trong UIViews - OK!
Vì vậy, bây giờ tôi muốn sử dụng Khung hoạt ảnh chính để tạo hoạt ảnh cho các phần tử UIKit. Tôi sử dụng số điện thoại
[UIView animateWithDuration:delay:options:animations:completion:]
để thực hiện hoạt ảnh (tôi nhắm mục tiêu iOS 4 trở lên).
Vấn đề bây giờ là tỷ lệ khung hình có hành vi lạ này: Đôi khi tôi nhận được 60 fps với nhiều nhiều yếu tố UIKit hiệu ứng động (30 nguyên tố là OK cho tôi) và một số lần khác tỷ lệ khung hình là rõ ràng dưới 60 fps ngay cả với đơn làm hoạt hình phần tử UIKit nhưng tôi không thể đo lường nó bằng Dụng cụ! Hãy để tôi giải thích thêm: Khi tôi mở Công cụ và theo dõi hoạt ảnh lõi và/hoặc trình điều khiển OpenGL, tôi luôn nhận được 60 khung hình/giây. Nhưng rõ ràng là đây không phải là trường hợp, tôi có thể nhìn thấy bằng mắt các hoạt ảnh OpenGL để di chuyển chậm hơn nhiều so với hoạt ảnh UIKit tương ứng ở trên cùng. Nếu tôi loại bỏ các phần tử UIKit khỏi khung nhìn thì tốc độ khung hình sẽ trở lại bình thường. Một tình huống tương tự với một trong những tôi mô tả ở đây xảy ra trong bất kỳ trò chơi OpenGL ES khi người dùng thay đổi âm lượng của thiết bị trong khi chơi trò chơi. Khi xem trong suốt cho thấy khối lượng hiện tại bắt đầu mờ dần và cho đến khi nó hoàn toàn mất dần tốc độ khung hình giảm mạnh, nhưng trong các công cụ (tôi đã thực hiện kiểm tra này quá) nó bị mắc kẹt trên 60 khung hình/giây!
Vì vậy, để tổng hợp: đôi khi tôi nhận được 60 fps thực với hoạt ảnh khối không có thăng trầm khi chạy và một số lần khác tôi nhận được giả 60 khung hình/giây không có thăng trầm.
Bạn có giải pháp nào cho vấn đề này không? Tất cả các thử nghiệm được thực hiện trên iPad 2 và iPhone 3GS với iOS 5.1