글이 정상적으로 보이지 않는다면 아래 주소로 접속해 주세요. https://egg-programmer.tistory.com/169
VSync란?
- Vertical sync (수직 동기화)
- GPU, 비디오 게임 및 모니터를 위한 최초의
동기화 기술 -
게임의 프레임 속도와 게임 모니터의 재생 빈도를 동기화하는 그래픽 기술
⇒ 게임 FPS는 모니터가 따라잡을 수 없는 속도로 정보를 전달했음
⇒ 서로 다른 화면이 충돌해 화면이 어긋나게 보여짐(Screen Tearing)

⇒ VSync 도입으로 FPS에 제한을 두어 동기화되게 하고, 부드러운 게임 화면을 볼 수 있게 됨
해상도, 색상, 밝기를 향상시킬 수는 없음
Frame Timing이란?
- 프레임을
실행/랜더링하는 데 걸리는 시간
- 랜더링되는 여러 프레임 간 타이밍이 얼마나 일관성 있는지도 보여줌
-
서로 다른
Frame Rates- 프레임 속도가 낮을수록 프레임을 렌더링하는 데 시간이 오래 걸림
- 프레임 속도가 높을수록 프레임을 렌더링하는 데 시간이 짧음
-
매끄러운 애니메이션을 보이기 위해서는
⇒ 프레임 드랍이 없어야 함
⇒ 애니메이션 구성의 기준이 되는 각 프레임의 시간차가 작고 일정해야 함
⇒ Frame Timing Control : 프레임 생성을 위한 시간 제어
브라우저의 Frame Timing 구성
- 타이머 사용
* 16.6ms 주기의 타이머 사용
* 단점: 프레임 드랍 발생- VSync 정보로 Refresh 주기 설정
* VSync 정보: frame time, frame interval- VSync 활용 - Callback 방식(Android/iOS/OSX)
* Callback 호출 시 interval 예측해 정확한 프레임 타임 계산- VSync 활용 - Querying 방식(Windows/Linux)
* 프레임마다 VSync 정보를 갱신하여 정확한 주기의 타이머 설정툴킷들의 프레임 타이밍
Web Application Scheduling
draw callback
window.requestAnimationFrame
idle callback
window.requestIdelCallback