120fps в мобилната разработка — какво е това, характеристики на ProMotion и оптимизация

Автор: IT Sectr Публикувано: 2026-04-01 Време за четене: 8 мин

120fps — честота от 120 кадъра в секунда, достъпна на дисплеи с честота на опресняване 120 Hz, където всеки кадър отнема 8,3 ms. Според Apple WWDC 2023 Session, ProMotion автоматично превключва честотата от 24 до 120 Hz за баланс на плавността и консумацията на енергия. 8,3 ms — това е два пъти по-малко от стандартния бюджет, което изисква сериозна оптимизация на рендирането.

Основни точки

  • 120fps — честота от 120 кадъра в секунда с бюджет за рендиране от 8,3 ms на кадър
  • ProMotion — технология на Apple с динамична честота от 24 до 120 Hz
  • LTPO дисплеи — панели с нискотемпературен поликристален оксид, поддържащи 1–120 Hz
  • Frame pacing — равномерност на изхода на кадрите, критична при 120fps
  • Оптимизация за 120fps изисква два пъти по-ефективен код, отколкото за 60fps

Какво е 120fps

120fps — удвоена честота на кадрите спрямо стандарта, при която дисплеят опреснява изображението 120 пъти в секунда. Всеки кадър има времеви бюджет от 8,33 ms — наполовина по-малко от 60fps. Това означава, че GPU и CPU трябва да обработват графиката два пъти по-бързо, а всички алгоритми, работещи за 16,7 ms при 60fps, се вместват при 120fps само при условие на двойно по-голяма ефективност.

Първото мобилно устройство с 120 Hz дисплей беше Razer Phone (2017) с IGZO панел на Sharp. Apple въведе 120 Hz в iPad Pro (2017) под името ProMotion, а в iPhone — едва през 2021 г. в iPhone 13 Pro. На Android 120 Hz стана масово от 2020 г.: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. Днес 90–120 Hz е стандарт за флагмански устройства, а LTPO технологията позволява динамична промяна на честотата.

Възприятието на 120fps от потребителя се различава от 60fps не толкова по липсата на заглъхвания, колкото по усещането за незабавен отговор — курсорът, скролването, анимациите следват пръста с минимално закъснение. Това усещане често се описва като „течен" или „маслен" екран. След използване на 120 Hz, връщането към 60 Hz субективно се възприема като забавяне, дори ако обективно няма пропуснати кадри.

Как работят 120 Hz дисплеите

120 Hz дисплей физически опреснява пикселите 120 пъти в секунда, изпращайки сигнал по шината MIPI DSI/DPI с двойна честота. Всеки пиксел получава нова стойност на яркост на всеки 8,3 ms. За OLED панелите това означава, че времето на емисия на всеки субпиксел се съкращава, което изисква по-ярка подсветка за запазване на същата яркост на изображението.

LTPO технология

LTPO (Low-Temperature Polycrystalline Oxide) — технология за производство на OLED дисплеи, която съчетава LTPS (висока скорост на превключване) и IGZO (ниска консумация на енергия в статично състояние). LTPO позволява на дисплея динамично да променя честотата на опресняване от 1 до 120 Hz без допълнителни енергийни разходи. В режим Always-On Display честотата пада до 1 Hz, при скролване — се повишава до 120 Hz. Това дава икономия до 30% енергия в сравнение с дисплеи, работещи постоянно на 120 Hz.

Frame Pacing при 120fps

Frame pacing — равномерност на интервалите между кадрите, най-важният параметър при 120fps. Ако при 60fps разлика от 2–3 ms между кадрите е незабележима, при 120fps същата абсолютна разлика съставлява 25% от продължителността на кадъра и се възприема като заглъхване. За плавни 120fps всеки кадър трябва да се вмества в 8,3 ms ±1 ms. Инструменти като FrameRate в Xcode Instruments показват не само средния FPS, но и хистограма на интервалите за оценка на frame pacing.

swift
// iOS — откриване на 120 Hz дисплей чрез CADisplayLink
func checkDisplayRefreshRate() {
    let link = CADisplayLink(target: self,
                                  selector: #selector(step))
    if let preferredRate = link?.preferredFrameRateRange {
        print("Макс. частота: \(preferredRate.maximum) Гц")
    }
}

ProMotion в iOS

ProMotion — търговска марка на Apple за дисплеи с адаптивна честота на опресняване до 120 Hz. За първи път представен в iPad Pro 10,5 (2017), след това се появи в iPhone 13 Pro (2021) и MacBook Pro (2021). ProMotion не е просто 120 Hz — това е интелигентно управление на честотата: системата анализира типа съдържание и превключва честотата за оптимален баланс между производителност и консумация на енергия.

Режими на работа на ProMotion

ProMotion поддържа четири режима: 24 Hz за статично съдържание и видео 24fps, 30 Hz за видео 30fps, 60 Hz за UI навигация и 120 Hz за скролване и игри. Превключването между режимите става за един кадър (8,3 ms) и е незабележимо за потребителя. Разработчикът може да повлияе на избора на честота чрез preferredFrameRateRange в CADisplayLink, но крайното решение се взема от системата на база анализ на съдържанието.

API за разработчици

Apple предоставя API за работа с ProMotion от iOS 15. CADisplayLink.preferredFrameRateRange позволява задаване на предпочитан честотен диапазон. UIScene.ActivationConditions може да повлияе на честотата при преходи между сцени. За Metal рендиране CAMetalLayer.displaySyncEnabled трябва да бъде true за синхронизация с ProMotion. Ако приложението не е оптимизирано за 120fps, iOS автоматично го превключва на 60 Hz, което се вижда в Xcode в секцията GPU Report.

swift
// iOS — заявка за 120fps за игрови режим
let displayLink = CADisplayLink(
    target: self,
    selector: #selector(gameLoop)
)
if #available(iOS 15.0, *) {
    displayLink?.preferredFrameRateRange =
        CAFrameRateRange(minimum: 80,
                          maximum: 120,
                          preferred: 120)
}
displayLink?.add(to: .current,
                    forMode: .default)

Оптимизация за 120fps

Оптимизация за 120fps — не е просто ускоряване на кода двойно, а преосмисляне на архитектурата за рендиране. Операциите, които се вместваха в 16,7 ms при 60fps, сега трябва да се изпълняват за 8,3 ms. Това засяга всички етапи на конвейера: подготовка на CPU, рендиране на GPU и системни извиквания.

Намаляване на draw calls за 120fps

При 120fps броят на draw calls на кадър трябва да бъде два пъти по-малък, отколкото при 60fps, за да се запази същото натоварване на GPU. Ако при 60fps са разрешени 400 draw calls, то при 120fps — не повече от 200. Използвайте текстурни атласи, обединяване на мрежи и GPU инстанциране за намаляване на извикванията за рендиране. На Metal използвайте Indirect Command Buffers, на Vulkan — Secondary Command Buffers за паралелно записване на команди.

Шейдъри — друг критичен фактор. Сложните пикселни шейдъри с множество текстурни проби и математически операции могат лесно да надхвърлят бюджета от 8,3 ms. Използвайте шейдъри с ниска точност (half вместо float), намалете броя на инструкциите и текстурните проби. На мобилни GPU (Apple A17, Snapdragon 8 Gen 3) всяка текстурна проба отнема 2–4 цикъла, а при 120fps това може да се превърне в тясно място.

CPU и Main Thread

При 120fps main thread трябва да подготви кадъра за 4–5 ms, за да остави време на GPU за рендиране. Всяка синхронна операция на main thread — четене от база данни, парсване на JSON, зареждане на изображения — създава заглъхване. Преместете всички тежки операции във фонові нишки, използвайте асинхронни API и пулове от нишки. В iOS DispatchQueue с qualityOfService .userInteractive трябва да бъде запазена само за критичен код за рендиране.

КомпонентБюджет 120fpsБюджет 60fps
CPU (main thread)4 ms8 ms
GPU рендиране4 ms8 ms
Композит0,3 ms0,7 ms
VSync изчакване0–2 ms0–5 ms

120fps срещу 60fps

Сравнение на 120fps и 60fps не се свежда до удвояване на плавността. Разликата се възприема различно в зависимост от типа съдържание. За скролване и UI анимации 120fps дава субективно по-„отзивчив" интерфейс. За игри предимството на 120fps се проявява в намаляване на замъгляването при движение и по-точно проследяване на бързи обекти.

Консумация на енергия — основният компромис. 120fps консумира 30–50% повече енергия от 60fps при същата яркост на дисплея. Това означава, че на батерия от 4000 mAh един час игра на 120fps разрежда батерията приблизително 25–30% по-бързо. LTPO дисплеите частично решават проблема, намалявайки честотата в статични сцени до 1 Hz, но при активна употреба (скролване, игри) честотата остава на максимум.

Изборът между 60fps и 120fps зависи от приоритетите на разработчика. За социални мрежи, месинджъри и новинарски приложения 120fps не дава значително предимство — основното взаимодействие (четене, въвеждане на текст) не печели от супер-плавност. За игри, карти, графични редактори и приложения с интензивна анимация 120fps се превръща в конкурентно предимство и маркер за качество.

Тестването на 120fps изисква специален подход: стандартните 60fps метрики не показват проблеми с frame pacing при 120 Hz. Използвайте високоскоростна камера (120+ fps) за запис на реалното поведение на екрана или вградените инструменти на платформата — Xcode Metal Capture за iOS и AGI (Android GPU Inspector) за Android. Тези инструменти показват точното време на всеки кадър, включително изчакване на VSync, и помагат за откриване на микро-заглъхвания.

Често задавани въпроси

Винаги ли 120fps е по-добро от 60fps?

Не винаги. 120fps изисква два пъти повече енергия и изчислителни ресурси. За статично съдържание и прост UI 60fps е достатъчен. Предимството на 120fps е забележимо в динамични сцени: скролване, игри, анимации на преходи.

Как да проверя дали приложението работи на 120fps?

Използвайте Xcode Instruments (шаблон Core Animation) или Android Studio Profiler. В iOS проверете CADisplayLink.timestamp — интервалът между извикванията трябва да бъде около 8,3 ms. В Android включете Show refresh rate в Developer Options.

Защо 120fps разрежда батерията по-бързо?

Дисплеят опреснява пикселите два пъти по-често, GPU извършва двойно повече операции по рендиране, CPU обработва двойно повече кадри. Всяка операция консумира енергия. LTPO дисплеите намаляват честотата в статично състояние, но при активна употреба консумацията на енергия нараства пропорционално на честотата.

Може ли приложение да работи на 120fps на Android?

Да. От Android 11 нататък системата поддържа различни честоти на опресняване. Разработчикът може да поиска 120 Hz чрез WindowManager.setPreferredRefreshRate. Но не всички устройства стабилно поддържат 120fps — необходима е оптимизация на GPU рендирането.

Ще забележи ли обикновеният потребител разликата между 60 и 120fps?

В сляп тест повечето потребители забелязват разликата при скролване и анимации. Въпреки това за обикновена употреба (социални мрежи, видео, месинджъри) разликата е субективно малка. След свикване с 120 Hz, връщането към 60 Hz се усеща като забавяне.

Резюме

  • 120fps — честота на кадрите с бюджет от 8,3 ms за супер-плавна анимация
  • ProMotion — адаптивна технология на Apple с диапазон 24–120 Hz
  • LTPO дисплеите динамично променят честотата от 1 до 120 Hz за икономия на енергия
  • Frame pacing е критичен при 120fps — неравномерност от 2–3 ms вече е забележима
  • Draw calls при 120fps не трябва да надвишават 200 на кадър
  • Консумацията на енергия на 120fps е с 30–50% по-висока от 60fps
  • Изборът на 120fps е оправдан за игри, карти и приложения с интензивна анимация

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също