Если бы я мог настроить код для немедленной адаптации к падению частоты кадров, игра практически никогда не работала бы со скоростью ниже 60 кадров в секунду, что было бы потрясающе.
Если бы это было возможно, мы бы нашли это стандартной функцией в движках рендеринга. Увы, это не так.
Обнаружение пропущенного кадра подразумевает, что кадр уже должен был быть пропущен. Накладные расходы на переключение путей кода, особенно обратно на версию с «высокой детализацией», также часто слишком высоки.
Помимо головной боли при разработке игры, визуальные эффекты или даже алгоритмы которой могут меняться в любое время.
Кроме того, восприятие игроков будет довольно негативным — подумайте о потоковом видео, которое автоматически подстраивается под пропускную способность и иногда кажется очень блочным в течение нескольких секунд.
Часто лучше ограничить игру 30 кадрами в секунду, если вы не можете поддерживать 60 кадров в секунду все время, и спроектировать ее на стабильные 30 кадров в секунду, а не на колебания от 40 до 60 кадров в секунду.
В любом случае, если вы зарегистрируете secondsPerFrame
и получите 0,0000, возможно, вы зарегистрировались, используя неправильный спецификатор формата. Попробуй это:
NSLog(@"spf: %f", [CCDirector sharedDirector].secondsPerFrame);
Имейте в виду, что это значение может быть средним по нескольким кадрам и может не обновляться в выпусках. Проверьте код на наличие #if/#ifdef.
person
LearnCocos2D
schedule
10.03.2014