2015-09-28 15 views
9

Tôi thấy tỷ lệ khung hình không phù hợp trong dự án khởi động SceneKit. Đôi khi nó chạy liên tục ở 60 khung hình/giây (hiển thị 12ms, 6ms kim loại tuôn ra), và đôi khi nó chạy liên tục ở tốc độ 40 khung hình/giây (hiển thị 20ms, 6ms kim loại tuôn ra), không hơn, không kém.Không đồng nhất SceneKit tốc độ khung hình

Tốc độ khung hình thay đổi ngẫu nhiên khi tôi mở lại ứng dụng và sẽ ở tốc độ khung hình đó cho đến lần mở lại tiếp theo. Tôi đã thử chuyển sang OpenGL ES, và trong khi nó có vẻ như để sửa chữa nó trong dự án khởi động, tôi vẫn thấy những giọt trong ứng dụng thực sự của tôi.

Dự án khởi động chưa được sửa đổi (tàu xoay) và tôi đang thử nghiệm trên Xcode 7.0 và iPad Mini 4 chạy iOS 9.0.1. Tôi không chắc chắn nguyên nhân gây ra sự cố, SceneKit, iOS hoặc thiết bị của tôi.

Chỉnh sửa: Đây là dấu vết hệ thống kim loại, phần đầu tiên chạy ở tốc độ 60 khung hình/giây, phần thứ hai tôi nhấn nút trang chủ và mở lại ứng dụng và chạy ở tốc độ 40 khung hình/giây. Có vẻ như có rất nhiều tải màu/cửa hàng trong phần thứ hai.

enter image description here

+0

Thiết bị của bạn có nhắm mục tiêu chỉ dành cho iPhone và bạn vừa thử nghiệm trên iPad? Bởi vì tôi đã làm việc trên một trò chơi nhắm mục tiêu đến iPhone chỉ, và khi tôi thử nghiệm nó trên iPad, tôi cũng nhận được 40 khung hình/giây. Tuy nhiên, khi tôi thay đổi mục tiêu thiết bị thành phổ dụng, iPad vẫn liên tục ở tốc độ 60 khung hình/giây. – Jarron

+0

@ Jarron nó thực sự là một dự án chỉ dành cho iPad. Duyệt các diễn đàn táo, điều này có vẻ là một lỗi đã biết. – Xzya

+0

@Xzya Bạn có liên kết đến cuộc thảo luận không phải là diễn đàn của Apple không? Tôi thấy tốc độ khung hình bắt đầu ở tốc độ 60 khung hình/giây rồi từ từ giảm xuống mức thấp nhất 50 giây. –

Trả lời

4

Đáng tiếc là nó trông giống như SceneKit (và SpriteKit) đang trong giai đoạn tiến hóa của sự phát triển, tại các chi phí của những người sử dụng chúng.

Vấn đề này chắc chắn là trên tất cả các thiết bị, và các khuôn khổ sau, mà tôi biết:

  • SceneKit
  • SpriteKit
  • kim loại

Thậm chí sử dụng OpenGL thay vì kim loại trong khung trò chơi vẫn còn tồn tại, không có sự nhất quán ít.

Dường như iOS cố gắng sửa tỷ lệ khung hình ở tốc độ 40 khung hình/giây nếu iOS xác định có sự cố khi duy trì tốc độ 60 khung hình ổn định.

Tôi nghĩ nguyên nhân của việc giảm xuống 40 khung hình/giây là iOS không giỏi giải thích "sự cố" và thực hiện lấy mẫu hiệu suất quá ngắn trong một giai đoạn tại điểm không ổn định trong lần khởi chạy ứng dụng. không có ở đó khi bản thân iOS đã thực sự ổn định và cho phép ứng dụng/trò chơi chạy mà không bị cản trở.

Mẫu mặc định với jetFighter không bao giờ gặp sự cố khi chạy ở tốc độ 60 khung hình/giây. Vì vậy, nó chỉ có ý nghĩa rằng nắp khung hình "tính năng" này sẽ trở thành hoạt động nếu cuộc bỏ phiếu của iOS để xác định khi nào giới hạn vòng lặp trò chơi ở tốc độ 40 khung hình/giây được thực hiện quá sớm trong thời gian khởi chạy, quá ngắn. Điều này có nghĩa là bất kỳ sự gián đoạn nào trong một vài khung hình đầu tiên của trò chơi khiến iOS tăng tốc ở tốc độ 40 khung hình/giây, suy nghĩ trước khi trò chơi sẽ không/không thể duy trì 60 khung hình/giây.

Trớ trêu thay, iOS có thể là nguyên nhân gây ra trục trặc mà nó phát hiện khi khởi chạy trò chơi khiến nó trở thành ứng dụng không thể duy trì 60fps ổn định.

NHƯNG TÔI ĐÃ ĐẠT ĐƯỢC!

Điều này dựa trên quan sát, không phải bất kỳ sự kiện đã biết nào về vấn đề này. Nhưng nó phù hợp với những gì tôi thấy đang xảy ra và lời giải thích hợp lý duy nhất tôi có cho đến nay.

"Tin vui" là iOS không chỉ lấy mẫu một lần và rời khỏi nó.Nó lấy mẫu các trò chơi spasmodically, và sau khi bị gián đoạn như nhảy ra màn hình chủ và trở lại vào ứng dụng.

Ví dụ: có thể gây ra việc lấy lại tốc độ khung hình của iOS và khiến nó tăng từ 40 lên 60 hoặc 60 đến 40, chỉ đơn giản bằng cách bắt đầu Quicktime screenCapture trong khi thiết bị của bạn được kết nối. Rõ ràng điều này (và một vài hành động khác) sẽ khiến iOS kiểm tra ứng dụng đang chạy cho tính nhất quán tốc độ khung hình của nó, một lần nữa, sau đó iOS điều chỉnh theo những phát hiện của nó, một lần nữa.

Và sau một khoảng thời gian tùy ý, chương trình sẽ quét lại. Nếu bạn để mẫu JetFighter chạy trong một thời gian, bạn cũng sẽ thấy rằng cuối cùng iOS thực hiện một thử nghiệm khác về tốc độ khung hình và thường xác định rằng nó đủ ổn định ở tốc độ 60 khung hình/giây để đặt nó lên 60 khung hình/giây, mặc dù ban đầu đã quyết định chỉ nên chạy ở tốc độ 40 khung hình/giây.

Tôi nói tất cả điều này bởi vì tôi đã xem một thứ gọi là "trình kết xuất" trong số liệu thống kê trên thiết bị cố ý chiếm đúng số lượng thời gian bổ sung trong mỗi gameloop để tăng 40 khung hình/giây, ngay cả khi không có đủ gần khác mọi thứ đang diễn ra để thực hiện điều đó. Nó xảy ra với tôi rằng Apple đang làm việc trên công nghệ tốc độ khung hình thay đổi theo báo cáo của họ về iPad Pro và các tính năng của iOS để hỗ trợ (dường như) được triển khai trước khi phát hành công nghệ màn hình và và thử nghiệm các ứng dụng đang chạy một cách kỳ quặc để xác định khi nào buộc phải cuộn chúng xuống tốc độ khung hình chậm hơn.

Cho rằng 40fps là số lẻ không chia đều thành tốc độ làm mới mặc định của thiết bị hiện tại ở tốc độ làm mới 60fps, có khả năng iPad Pro có khả năng làm mới màn hình 120Hz nếu chúng quan tâm đến 40fps.

Khi chụp từ iPad hiện tại, nếu tốc độ khung hình bị khóa ở tốc độ 40 khung hình/giây, tôi thấy chuỗi khung hình 2: 1: 2: 1: 2: 1 là cách bạn tạo 40 khung hình/giây trên thiết bị làm mới 60Hz.

Điều này hoàn toàn không lý tưởng. Bạn sẽ không bao giờ muốn nhìn thấy điều này trên một màn hình 60Hz bởi vì nó gây phiền nhiễu, trực quan, ngay cả đối với những người có đôi mắt không nhạy cảm.

Có thể công nghệ tốc độ khung biến đổi này cho phép 40fps đúng trên iPhone mới, tôi không biết. Chưa thấy bất cứ điều gì được thử nghiệm, nhưng nó có vẻ kỳ lạ mà một cái gì đó có khả năng chỉ thực sự có thể trên iPad Pro đang gây ra vấn đề này trên tất cả mọi thứ vào lúc này.

+0

Điều này thực sự có vẻ là trường hợp. Quan sát kỹ hơn dấu vết, mẫu 2: 1: 2: 1 hiển thị rõ ràng http://i.imgur.com/DUEI0A3.png – Xzya

Các vấn đề liên quan