모바일 개발에서의 120fps — 개념, ProMotion 기능 및 최적화

저자: IT Sectr 게시일: 2026-04-01 읽는 시간: 8 분

120fps — 120Hz 재생률 디스플레이에서 사용 가능한 초당 120프레임의 프레임률로, 각 프레임은 8.3ms가 소요됩니다. Apple WWDC 2023 Session에 따르면 ProMotion은 부드러움과 전력 소비의 균형을 위해 주파수를 24~120Hz로 자동 전환합니다. 8.3ms는 표준 예산의 절반으로, 심각한 렌더링 최적화가 필요합니다.

핵심 요점

  • 120fps — 프레임당 8.3ms 렌더링 예산의 초당 120프레임 프레임률
  • ProMotion — 24~120Hz의 동적 주파수를 갖는 Apple 기술
  • LTPO 디스플레이 — 1~120Hz를 지원하는 저온 폴리크리스탈린 산화물 패널
  • Frame pacing — 120fps에서 중요한 프레임 출력의 균일성
  • 최적화 120fps에는 60fps보다 두 배 효율적인 코드 필요

120fps란

120fps는 표준 프레임률의 두 배로, 디스플레이가 초당 120회 이미지를 업데이트합니다. 각 프레임에는 8.33ms의 시간 예산이 있으며, 이는 60fps의 절반입니다. 즉, GPU와 CPU가 그래픽을 두 배 빠르게 처리해야 하며, 60fps에서 16.7ms 내에 작동하는 모든 알고리즘은 120fps에서 효율이 두 배가 되어야만 맞습니다.

120Hz 디스플레이를 탑재한 최초의 모바일 기기는 Sharp의 IGZO 패널을 사용한 Razer Phone (2017)이었습니다. Apple은 iPad Pro (2017)에서 ProMotion이라는 이름으로 120Hz를 도입했고, iPhone에서는 2021년 iPhone 13 Pro에서야 도입했습니다. Android에서는 2020년부터 120Hz가 주류가 되었습니다: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. 오늘날 90~120Hz는 플래그십 기기의 표준이며, LTPO 기술이 동적 주파수 전환을 가능하게 합니다.

120fps에 대한 사용자 인식은 60fps와 버벅임의 부재보다는 즉각적인 반응감에서 다릅니다 — 커서, 스크롤, 애니메이션이 최소 지연으로 손가락을 따라갑니다. 이 느낌은 종종 “액체” 또는 “기름진” 화면으로 묘사됩니다. 120Hz를 사용한 후 60Hz로 돌아가면 객관적인 프레임 드롭이 없더라도 주관적으로 느려진 것처럼 느껴집니다.

120Hz 디스플레이 작동 방식

120Hz 디스플레이는 MIPI DSI/DPI 버스를 통해 두 배 주파수로 신호를 보내 픽셀을 물리적으로 초당 120회 업데이트합니다. 각 픽셀은 8.3ms마다 새 밝기 값을 받습니다. OLED 패널의 경우 각 서브픽셀의 방출 시간이 줄어들어 동일한 이미지 밝기를 유지하려면 더 밝은 백라이트가 필요합니다.

LTPO 기술

LTPO(저온 폴리크리스탈린 산화물)는 LTPS(고속 스위칭)와 IGZO(정적 저전력 소비)를 결합한 OLED 디스플레이 제조 기술입니다. LTPO는 디스플레이가 추가 전력 비용 없이 재생률을 1~120Hz로 동적으로 변경할 수 있게 합니다. Always-On Display 모드에서는 주파수가 1Hz로 떨어지고, 스크롤 중에는 120Hz로 올라갑니다. 이는 지속적으로 120Hz로 작동하는 디스플레이에 비해 최대 30%의 에너지 절약을 제공합니다.

120fps에서의 Frame Pacing

Frame pacing — 프레임 간 간격의 균일성은 120fps에서 가장 중요한 매개변수입니다. 60fps에서는 2~3ms의 차이가 눈에 띄지 않지만, 120fps에서는 동일한 절대 차이가 프레임 지속 시간의 25%를 차지하여 버벅임으로 인식됩니다. 부드러운 120fps를 위해서는 각 프레임이 8.3ms ±1ms 이내에 있어야 합니다. Xcode Instruments의 FrameRate와 같은 도구는 평균 FPS뿐만 아니라 frame pacing 평가를 위한 간격 히스토그램도 표시합니다.

swift
// iOS — CADisplayLink를 통한 120Hz 디스플레이 감지
func checkDisplayRefreshRate() {
    let link = CADisplayLink(target: self,
                                  selector: #selector(step))
    if let preferredRate = link?.preferredFrameRateRange {
        print("최대 주파수: \(preferredRate.maximum) Hz")
    }
}

iOS의 ProMotion

ProMotion은 최대 120Hz의 적응형 재생률을 갖춘 디스플레이에 대한 Apple의 상표입니다. iPad Pro 10.5 (2017)에 처음 도입되었고, 이후 iPhone 13 Pro (2021) 및 MacBook Pro (2021)에 적용되었습니다. ProMotion은 단순한 120Hz가 아닙니다 — 지능형 주파수 관리입니다: 시스템이 콘텐츠 유형을 분석하고 성능과 전력 소비의 최적 균형을 위해 주파수를 전환합니다.

ProMotion 작동 모드

ProMotion은 네 가지 모드를 지원합니다: 정적 콘텐츠 및 24fps 비디오용 24Hz, 30fps 비디오용 30Hz, UI 탐색용 60Hz, 스크롤 및 게임용 120Hz. 모드 간 전환은 단일 프레임(8.3ms) 내에서 이루어지며 사용자가 인지할 수 없습니다. 개발자는 CADisplayLink의 preferredFrameRateRange를 통해 주파수 선택에 영향을 줄 수 있지만, 최종 결정은 콘텐츠 분석을 기반으로 시스템이 내립니다.

개발자용 API

Apple은 iOS 15부터 ProMotion 작업을 위한 API를 제공합니다. CADisplayLink.preferredFrameRateRange로 선호 주파수 범위를 설정할 수 있습니다. UIScene.ActivationConditions는 장면 전환 시 주파수에 영향을 줄 수 있습니다. Metal 렌더링의 경우 ProMotion과의 동기화를 위해 CAMetalLayer.displaySyncEnabled를 true로 설정해야 합니다. 앱이 120fps에 최적화되지 않은 경우 iOS가 자동으로 60Hz로 전환하며, 이는 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 최적화는 단순히 코드 속도를 두 배로 높이는 것이 아니라 렌더링 아키텍처를 재고하는 것입니다. 60fps에서 16.7ms 내에 처리되던 작업이 이제 8.3ms 내에 완료되어야 합니다. 이는 파이프라인의 모든 단계에 영향을 미칩니다: CPU 준비, GPU 렌더링, 시스템 호출.

120fps를 위한 draw calls 감소

120fps에서는 동일한 GPU 부하를 유지하기 위해 프레임당 draw calls 수가 60fps의 절반이어야 합니다. 60fps에서 400개의 draw call이 허용된다면 120fps에서는 200개를 초과할 수 없습니다. draw calls를 줄이려면 텍스처 아틀라스, 메시 병합, GPU 인스턴싱을 사용하세요. Metal에서는 Indirect Command Buffers를, Vulkan에서는 병렬 명령 기록을 위해 Secondary Command Buffers를 사용하세요.

Shaders — 또 다른 중요한 요소입니다. 여러 텍스처 조회와 수학 연산이 포함된 복잡한 픽셀 셰이더는 8.3ms 예산을 쉽게 초과할 수 있습니다. 저정밀도 셰이더(float 대신 half)를 사용하고 명령어와 텍스처 샘플 수를 줄이세요. 모바일 GPU(Apple A17, Snapdragon 8 Gen 3)에서 각 텍스처 조회는 2~4사이클이 소요되며, 120fps에서는 이것이 병목 현상이 될 수 있습니다.

CPU 및 메인 스레드

120fps에서는 메인 스레드가 GPU 렌더링을 위한 시간을 남기기 위해 4~5ms 내에 프레임을 준비해야 합니다. 메인 스레드의 동기 작업 — 데이터베이스 읽기, JSON 파싱, 이미지 로딩 — 은 버벅임을 만듭니다. 모든 무거운 작업을 백그라운드 스레드로 이동하고, 비동기 API와 스레드 풀을 사용하세요. iOS에서 qualityOfService .userInteractive가 있는 DispatchQueue는 중요한 렌더링 코드에만 예약되어야 합니다.

구성 요소120fps 예산60fps 예산
CPU (메인 스레드)4 ms8 ms
GPU 렌더링4 ms8 ms
합성0.3 ms0.7 ms
VSync 대기0~2 ms0~5 ms

120fps vs 60fps

120fps와 60fps 비교는 단순히 부드러움을 두 배로 만드는 것이 아닙니다. 차이는 콘텐츠 유형에 따라 다르게 인식됩니다. 스크롤 및 UI 애니메이션의 경우 120fps는 주관적으로 더 “반응성”이 좋은 인터페이스를 제공합니다. 게임의 경우 120fps의 장점은 모션 블러 감소와 빠른 객체의 더 정확한 추적에서 나타납니다.

전력 소비 — 주요 절충점입니다. 120fps는 동일한 디스플레이 밝기에서 60fps보다 30~50% 더 많은 전력을 소비합니다. 즉, 4000mAh 배터리에서 120fps로 1시간 게임을 하면 배터리가 약 25~30% 더 빨리 소모됩니다. LTPO 디스플레이는 정적 장면에서 주파수를 1Hz로 낮추어 문제를 부분적으로 해결하지만, 활성 사용 중(스크롤, 게임)에는 주파수가 최대로 유지됩니다.

60fps와 120fps 사이의 선택은 개발자의 우선순위에 따라 달라집니다. 소셜 네트워크, 메신저, 뉴스 앱의 경우 120fps는 큰 이점을 제공하지 않습니다 — 주요 상호작용(읽기, 텍스트 입력)은 초부드러움의 혜택을 받지 않습니다. 게임, 지도, 그래픽 편집기 및 집중적인 애니메이션이 있는 앱의 경우 120fps가 경쟁 우위이자 품질 마커가 됩니다.

테스트 120fps에는 특별한 접근 방식이 필요합니다: 표준 60fps 메트릭으로는 120Hz에서의 frame pacing 문제를 발견할 수 없습니다. 고속 카메라(120+fps)를 사용하여 실제 화면 동작을 녹화하거나 플랫폼 내장 도구 — iOS용 Xcode Metal Capture 및 Android용 AGI(Android GPU Inspector)를 사용하세요. 이러한 도구는 VSync 대기를 포함한 각 프레임의 정확한 시간을 표시하고 마이크로 스터터를 식별하는 데 도움을 줍니다.

자주 묻는 질문

120fps가 항상 60fps보다 좋은가요?

항상 그렇지는 않습니다. 120fps는 두 배의 에너지와 컴퓨팅 리소스가 필요합니다. 정적 콘텐츠와 간단한 UI의 경우 60fps로 충분합니다. 120fps의 장점은 동적 장면(스크롤, 게임, 전환 애니메이션)에서 두드러집니다.

앱이 120fps로 실행되는지 확인하는 방법은?

Xcode Instruments(Core Animation 템플릿) 또는 Android Studio Profiler를 사용하세요. iOS에서는 CADisplayLink.timestamp를 확인하세요 — 호출 간 간격이 약 8.3ms여야 합니다. Android에서는 개발자 옵션에서 Show refresh rate를 활성화하세요.

120fps가 배터리를 더 빨리 소모하는 이유는?

디스플레이가 픽셀을 두 배 더 자주 업데이트하고, GPU가 두 배의 렌더링 작업을 수행하며, CPU가 두 배의 프레임을 처리합니다. 각 작업은 에너지를 소비합니다. LTPO 디스플레이는 정적 상태에서 주파수를 낮추지만, 활성 사용 중에는 전력 소비가 주파수에 비례하여 증가합니다.

Android에서 앱이 120fps로 실행될 수 있나요?

. Android 11부터 시스템이 다양한 재생률을 지원합니다. 개발자는 WindowManager.setPreferredRefreshRate를 통해 120Hz를 요청할 수 있습니다. 그러나 모든 기기가 120fps를 안정적으로 유지할 수 있는 것은 아닙니다 — GPU 렌더링 최적화가 필요합니다.

일반 사용자가 60과 120fps의 차이를 알아챌까요?

블라인드 테스트에서 대부분의 사용자가 스크롤 및 애니메이션 중에 차이를 알아챕니다. 그러나 일상적인 사용(소셜 미디어, 비디오, 메신저)에서는 차이가 주관적으로 작습니다. 120Hz에 익숙해진 후 60Hz로 돌아가면 느리게 느껴집니다.

요약

  • 120fps — 초부드러운 애니메이션을 위한 8.3ms 예산의 프레임률
  • ProMotion — 24~120Hz 범위의 Apple 적응형 기술
  • LTPO 디스플레이가 에너지 절약을 위해 1~120Hz로 동적 주파수 변경
  • Frame pacing은 120fps에서 중요 — 2~3ms의 불균일성도 이미 눈에 띔
  • Draw calls는 120fps에서 프레임당 200을 초과하지 않아야 함
  • 전력 소비는 120fps에서 60fps보다 30~50% 높음
  • 120fps 선택은 게임, 지도 및 집중적인 애니메이션이 있는 앱에 적합

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기