[android] VSYNC 가 뭐하는 녀석인지 간단히 이야기하면?
https://www.youtube.com/watch?v=1iaHxmfZGGc
https://nayaneshguptetechstuff.wordpress.com/2014/07/01/what-is-vsyc-in-android/
-
VSYNC 는 Vertical Synchronization 을 이야기한다.
-
Android 4.1 에 등장한 것으로 Project Butter ( UI 부드럽게 ) 에 나온 방법이다.
-
VSYNC 는 kernel 에서 fixed interval 로 계속 event 가 오는 것을 이야기한다.
animation 이나 window drawing 등이 VSYNC interval 에 맞춰서 진행된다.
-
GPU 의 fps 와 Device 의 Hz 에 차이가 있을 때 이를 조정해주는 역할을 한다.
-
예를 들어 GPU 는 100fps ( 1초에 100개의 frame 을 그릴 수 있다. ).
그리고 Device 는 75 Hz 라면 ( 1초에 75번 화면에 그릴 수 있다. ),
GPU 에서 그리는 것을 그대로 Device 에 매번 뿌린다면 계속 delay 가 생길 수 있다.
이 때 VSYNC 가 GPU 와 Device 의 이런 gap 을 계산하여 필요한 frame 만 뿌려준다.
-
반대로 GPU 가 30fps 이고, Device 가 60Hz 라면,
GPU 그리는 것보다 Device 가 더 빨리 표시하려고 하기 때문에,
해당 frame 에 GPU 가 미리 그려놓은 것을 한번 더 보여주는 재활용을 하게 된다.
이런 것도 VSYNC 를 통하게 된다.
-
결론적으로 VSYNC 가 없으면, GPU 와 Device 의 frame rate 에 대한 갭이 있을 때
부드럽게 조정하여 뿌려주는 기능이 없어 튀거나, Animation 등이 쌓이거나 하는 현상이 발생할 수 있다.
VSYNC 가 이런 현상을 방지하여 부드럽게 ( like butter ) 만들어준다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Nice 한 UI 를 만드는 규칙~ (0) | 2017.08.03 |
---|---|
[android] 추가된 유용한 annotations (2) | 2017.08.02 |
[android] Annotation Processing 에 대한 이야기 (0) | 2017.07.31 |
[android] minSdk 를 올려 market update 하면 무슨 일이 발생하나요? (0) | 2017.07.30 |
[android] minSdkVersion vs. targetSdkVersion (0) | 2017.07.29 |
댓글