Istnieje kilka przyczyn tego zachowania, a nie tylko efekt cocos2d, ale efekt widoczny w dowolnym silniku gry w środowiskach z włączoną wersją vertical synchronization (VSYNC). W systemie iOS VSYNC jest zawsze włączony, na komputerach zazwyczaj można go wyłączyć, aby poprawić liczbę klatek na sekundę, jeśli stale spadają one poniżej wskaźnika monitora kosztem screen tearing. Zazwyczaj wyświetlacze LCD, takie jak urządzenia z systemem iOS, aktualizują swój wyświetlacz z częstotliwością 60 Hz, co pozwala uzyskać maksymalnie 60 klatek na sekundę.
Cocos2D 1.x domyślnie używa aktualizacji CADisplayLink, Cocos2D 2.x używa wyłącznie oprogramowania CADisplayLink. CADisplayLink powoduje synchronizację aktualizacji z częstotliwością odświeżania ekranu. Oznacza to, że powiadomienie jest wysyłane, gdy ekran zakończy rysowanie jego zawartości.
Po uzyskaniu 60 fps wszystko jest w porządku. Ale jeśli gra nie jest w stanie wyrenderować klatki na czas, aby wyświetlić 60 klatek na sekundę, otrzyma kolejną aktualizację dopiero po zakończeniu następnego odświeżania ekranu. Skutecznie zmniejsza to o połowę liczbę klatek na sekundę, gdy ilość klatek na sekundę spadnie poniżej 60 fps - lub innymi słowy, gdy tylko zakończy się cykl renderowania aktualizacji o więcej niż 16.666 milisekund. Oznacza to, że możesz mieć tylko dyskretne klatek na sekundę 60, 30, 20 i 15 fps (60 podzielone przez 1, 2, 3 i 4) na iOS z aktualizacjami CADisplayLink.
Efekt jest dość zauważalny, ponieważ liczba klatek na sekundę, która waha się między 60, 30, 20 i 15 klatek na sekundę - nawet na ułamek sekundy - nie jest gładka, głównie dlatego, że jest niestabilna - niestałość jest tym, co zauważamy jako "nie gładki". Jeśli gra ma na to wpływ, może się okazać, że ograniczenie klatek do 30 klatek na sekundę sprawi, że gra będzie wyglądać gładko. Masz również więcej czasu na aktualizację & renderowania elementów między klatkami.
To niezmienność klatek filmu 24 klatki na sekundę, która jest pomyślana jako "płynna", ale także reżyserzy filmowi nauczyli się unikać scen, w których ograniczona liczba klatek na sekundę staje się zbyt oczywista. Na przykład, unikają oni jak cholera tego, co gry robią bardzo często: przewijaj się na boki, tj. Ruchy kamery w bok lub ruch obiektów na boki przechodzący przez kamerę.
Będziesz zaskoczony, jak płynne filmy mogą się przydać podczas oglądania filmu Hobbit - to pierwszy film, który można obejrzeć z prędkością 48 klatek na sekundę. Od razu zauważysz, o ile bardziej "prawdziwe" i "realistyczne" postacie w filmie są. Aby uzyskać wrażenie, sprawdź to unofficial 48 fps The Hobbit trailer.
Co cocos2d wyświetla jako fps nie jest dokładną reprezentacją przełącznika z 60 na 30 do 20 i 15 fps, ale na średnią liczbę klatek na kilka klatek.Dlatego, gdy cocos2d drukuje "45 fps", oznacza to połowę czasu, gdy gra wyświetla 30 fps, a druga połowa z 60 fps w ciągu ostatnich kilku klatek.
jak zawsze, skarbnica przydatnych informacji. thks. – YvesLeBorg
zapomniałeś 20fps (60/3) – Sebastian
ah, oczywiście ... zaktualizowałeś – LearnCocos2D