120fps — 120 Hz yenileme hızına sahip ekranlarda kullanılabilen saniyede 120 karelik bir kare hızı, her kare 8.3 ms sürer. Apple WWDC 2023 Session'a göre ProMotion, akıcılık ve güç tüketimi dengesi için frekansı 24 ile 120 Hz arasında otomatik olarak değiştirir. 8.3 ms, standart bütçenin yarısıdır ve ciddi bir render optimizasyonu gerektirir.
Ana Çıkarımlar
120fps, ekranın görüntüyü saniyede 120 kez güncellediği standart kare hızının iki katıdır. Her karenin zaman bütçesi 8.33 ms'dir — 60fps'in yarısı. Bu, GPU ve CPU'nun grafikleri iki kat daha hızlı işlemesi gerektiği ve 60fps'te 16.7 ms içinde çalışan tüm algoritmaların 120fps'te ancak iki kat daha verimli olmaları halinde sığabileceği anlamına gelir.
120 Hz ekrana sahip ilk mobil cihaz, Sharp'ın IGZO paneline sahip Razer Phone (2017) oldu. Apple, 120 Hz'i iPad Pro (2017)'de ProMotion adıyla tanıttı ve iPhone'larda ancak 2021'de iPhone 13 Pro ile getirdi. Android'de 120 Hz, 2020'den itibaren ana akım haline geldi: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. Bugün 90–120 Hz, amiral gemisi cihazlar için standarttır ve LTPO teknolojisi dinamik frekans değiştirmeyi mümkün kılar.
Kullanıcının 120fps algısı, 60fps'ten takılma olmamasından ziyade anlık yanıt hissi açısından farklıdır — imleç, kaydırma ve animasyonlar minimum gecikmeyle parmağı takip eder. Bu his genellikle “sıvı” veya “yağlı” ekran olarak tanımlanır. 120 Hz kullandıktan sonra 60 Hz'e dönmek, objektif kare düşüşleri olmasa bile öznel olarak yavaş hissedilir.
120 Hz ekran, MIPI DSI/DPI veri yolu üzerinden çift frekansta sinyal göndererek pikselleri fiziksel olarak saniyede 120 kez günceller. Her piksel 8.3 ms'de bir yeni bir parlaklık değeri alır. OLED paneller için bu, her alt pikselin yayım süresinin azaldığı ve aynı görüntü parlaklığını korumak için daha parlak bir arka aydınlatma gerektiği anlamına gelir.
LTPO (Düşük Sıcaklık Polikristalin Oksit), LTPS (yüksek anahtarlama hızı) ve IGZO (düşük statik güç tüketimi) birleştiren bir OLED ekran üretim teknolojisidir. LTPO, ekranın yenileme hızını ek güç maliyeti olmadan 1 ila 120 Hz arasında dinamik olarak değiştirmesine olanak tanır. Always-On Display modunda frekans 1 Hz'e düşer; kaydırma sırasında 120 Hz'e çıkar. Bu, sürekli 120 Hz'de çalışan ekranlara kıyasla %30'a kadar enerji tasarrufu sağlar.
Frame pacing — kareler arasındaki aralıkların düzgünlüğü, 120fps'te en önemli parametredir. 60fps'te kareler arasında 2–3 ms'lik bir fark algılanamazken, 120fps'te aynı mutlak fark kare süresinin %25'ini oluşturur ve takılma olarak algılanır. Akıcı 120fps için her kare 8.3 ms ±1 ms içinde olmalıdır. Xcode Instruments'taki FrameRate gibi araçlar, yalnızca ortalama FPS'yi değil, aynı zamanda frame pacing'i değerlendirmek için aralıkların histogramını da gösterir.
// iOS — CADisplayLink ile 120 Hz ekran algılama
func checkDisplayRefreshRate() {
let link = CADisplayLink(target: self,
selector: #selector(step))
if let preferredRate = link?.preferredFrameRateRange {
print("Maks. frekans: \(preferredRate.maximum) Hz")
}
}
ProMotion, 120 Hz'e kadar uyarlanabilir yenileme hızlarına sahip ekranlar için Apple'ın ticari markasıdır. İlk olarak iPad Pro 10.5 (2017)'te tanıtıldı, daha sonra iPhone 13 Pro (2021) ve MacBook Pro (2021)'de görüldü. ProMotion yalnızca 120 Hz değildir — bu akıllı frekans yönetimidir: sistem içerik türünü analiz eder ve performans ve güç tüketiminin optimal dengesi için frekansı değiştirir.
ProMotion dört modu destekler: statik içerik ve 24fps video için 24 Hz, 30fps video için 30 Hz, UI navigasyonu için 60 Hz ve kaydırma ve oyun için 120 Hz. Modlar arasında geçiş tek bir kare içinde (8.3 ms) gerçekleşir ve kullanıcı için algılanamaz. Geliştiriciler, CADisplayLink'teki preferredFrameRateRange aracılığıyla frekans seçimini etkileyebilir, ancak nihai kararı içerik analizine dayanarak sistem verir.
Apple, iOS 15'ten itibaren ProMotion ile çalışmak için API'ler sağlar. CADisplayLink.preferredFrameRateRange, tercih edilen bir frekans aralığı ayarlamaya olanak tanır. UIScene.ActivationConditions, sahneler arasında geçiş yaparken frekansı etkileyebilir. Metal için, ProMotion ile senkronizasyon için CAMetalLayer.displaySyncEnabled true olmalıdır. Bir uygulama 120fps için optimize edilmemişse, iOS onu otomatik olarak 60 Hz'e geçirir ve bu Xcode'da GPU Report bölümünde görülebilir.
// iOS — oyun modu için 120fps talebi
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 için optimizasyon, yalnızca kod hızını iki katına çıkarmakla ilgili değil, render mimarisini yeniden düşünmekle ilgilidir. 60fps'te 16.7 ms içinde tamamlanan işlemler artık 8.3 ms içinde tamamlanmalıdır. Bu, pipeline'ın tüm aşamalarını etkiler: CPU hazırlığı, GPU render ve sistem çağrıları.
120fps'te, aynı GPU yükünü korumak için kare başına draw calls sayısı 60fps'tekinin yarısı olmalıdır. 60fps'te 400 draw call kabul edilebilirse, 120fps'te 200'den fazlasına izin verilmez. Draw call'ları azaltmak için doku atlasları, ağ birleştirme ve GPU örneklemesi kullanın. Metal'de Indirect Command Buffers kullanın; Vulkan'da paralel komut kaydı için Secondary Command Buffers kullanın.
Shaders — bir diğer kritik faktör. Birden fazla doku örneklemesi ve matematiksel işlem içeren karmaşık piksel gölgelendiriciler, 8.3 ms bütçesini kolayca aşabilir. Düşük hassasiyetli gölgelendiriciler (float yerine half) kullanın, talimat ve doku örneği sayısını azaltın. Mobil GPU'larda (Apple A17, Snapdragon 8 Gen 3), her doku örneklemesi 2–4 döngü alır ve 120fps'te bu bir darboğaz haline gelebilir.
120fps'te, ana iş parçacığı GPU render için zaman bırakmak üzere bir kareyi 4–5 ms içinde hazırlamalıdır. Ana iş parçacığındaki herhangi bir senkron işlem — veritabanı okuma, JSON ayrıştırma, görüntü yükleme — takılma yaratır. Tüm ağır işlemleri arka plan iş parçacıklarına taşıyın, eşzamansız API'ler ve iş parçacığı havuzları kullanın. iOS'ta, qualityOfService .userInteractive ile DispatchQueue yalnızca kritik render kodu için ayrılmalıdır.
| Bileşen | 120fps bütçe | 60fps bütçe |
|---|---|---|
| CPU (ana iş parçacığı) | 4 ms | 8 ms |
| GPU render | 4 ms | 8 ms |
| Kompozit | 0.3 ms | 0.7 ms |
| VSync bekleme | 0–2 ms | 0–5 ms |
120fps ve 60fps karşılaştırması yalnızca akıcılığı iki katına çıkarmakla ilgili değildir. Fark, içerik türüne bağlı olarak farklı şekilde algılanır. Kaydırma ve UI animasyonları için 120fps, öznel olarak daha “yanıt verebilir” bir arayüz sağlar. Oyun için 120fps'in avantajı, azaltılmış hareket bulanıklığı ve hızlı nesnelerin daha doğru takibinde ortaya çıkar.
Güç tüketimi — ana ödünleşme. 120fps, aynı ekran parlaklığında 60fps'ten %30–50 daha fazla güç tüketir. Bu, 4000 mAh bataryada 120fps'te bir saat oyun oynamanın bataryayı yaklaşık %25–30 daha hızlı tükettiği anlamına gelir. LTPO ekranlar, statik sahnelerde frekansı 1 Hz'e düşürerek sorunu kısmen çözer, ancak aktif kullanım sırasında (kaydırma, oyun) frekans maksimumda kalır.
60fps ve 120fps arasındaki seçim, geliştiricinin önceliklerine bağlıdır. Sosyal ağlar, mesajlaşma ve haber uygulamaları için 120fps önemli bir avantaj sağlamaz — ana etkileşim (okuma, metin girişi) ultra akıcılıktan yararlanmaz. Oyunlar, haritalar, grafik düzenleyiciler ve yoğun animasyonlu uygulamalar için 120fps rekabet avantajı ve kalite göstergesi haline gelir.
Test 120fps özel bir yaklaşım gerektirir: standart 60fps metrikleri 120 Hz'de frame pacing sorunlarını ortaya çıkarmaz. Gerçek ekran davranışını kaydetmek için yüksek hızlı kamera (120+ fps) veya yerleşik platform araçları — iOS için Xcode Metal Capture ve Android için AGI (Android GPU Inspector) kullanın. Bu araçlar, VSync beklemesi dahil her karenin tam süresini gösterir ve mikro takılmaları belirlemeye yardımcı olur.
Sıkça sorulan sorular
Her zaman değil. 120fps iki kat daha fazla enerji ve bilgi işlem kaynağı gerektirir. Statik içerik ve basit UI için 60fps yeterlidir. 120fps'in avantajı dinamik sahnelerde belirgindir: kaydırma, oyun, geçiş animasyonları.
Xcode Instruments (Core Animation şablonu) veya Android Studio Profiler kullanın. iOS'ta CADisplayLink.timestamp'i kontrol edin — çağrılar arasındaki aralık yaklaşık 8.3 ms olmalıdır. Android'de Geliştirici Seçenekleri'nde Show refresh rate'i etkinleştirin.
Ekran pikselleri iki kat daha sık günceller, GPU iki kat daha fazla render işlemi gerçekleştirir ve CPU iki kat daha fazla kare işler. Her işlem enerji tüketir. LTPO ekranlar hareketsiz halde frekansı düşürür, ancak aktif kullanım sırasında güç tüketimi frekansla orantılı olarak artar.
Evet. Android 11'den itibaren sistem farklı yenileme hızlarını destekler. Geliştiriciler, WindowManager.setPreferredRefreshRate aracılığıyla 120 Hz talep edebilir. Ancak tüm cihazlar 120fps'i kararlı bir şekilde sürdüremez — GPU render optimizasyonu gereklidir.
Kör bir testte, çoğu kullanıcı kaydırma ve animasyonlar sırasında farkı fark eder. Ancak günlük kullanımda (sosyal medya, video, mesajlaşma) fark öznel olarak küçüktür. 120 Hz'e alıştıktan sonra 60 Hz'e dönmek yavaş hissedilir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun