Software Development/Graphics

컴퓨터 그래픽스 이론 정리 - 더블버퍼링(Double Buffering)

huiyu 2018. 4. 28. 15:36

더블버퍼링

- 일반적인 비디오 카드에서 Frame Buffer는 2중 포트(Dual Port) 구조
- 한쪽은 GPU, 다른 한쪽은 Video Controller.
- GPU는 그려질 화면을 프레임버퍼에 쓰는 일을,
  Video Controller는 프레임버퍼에 그려진 화면을 출력하는 일을 한다.


* GPU가 프레임버퍼에 쓰는 작업은 비디오 컨트롤러가 프레임 버퍼를 읽는 속도에 비해 훨씬 느리다.
 - Flickering(깜빡거림) 현상은 이러한 속도차로 발생하는 문제로,
   Frame Buffer에 완전히 정보가 저장되지 않은 상태에서 불완전한 내용의 버퍼를 화면에 그리면서 발생한다.


=> Flickering(깜빡거림) 현상을 해결하기 위해 더블 버퍼링을 사용한다.

 더블 버퍼링(Double Buffering) : 위 그림과 같이 두개의 버퍼(Front Buffer, Back Buffer)를 사용하는 방법

 - Video Controller가 프론트버퍼의 내용을 출력하는 동안, GPU는 백버퍼에 백버퍼에 다음에 그려질 내용을 쓴다. 
 - GPU가 전부 내용을 썼으면 비디오 컨트롤러가 백버퍼로 스위칭 후 새로운 내용을 화면에 그린다.
 - 동시에 GPU는 프론트버퍼로 스위칭, 새로 화면에 그릴 내용을 버퍼에 쓴다.

*현재 비디오 컨트롤러가 읽고 있는 버퍼를 프론트 버퍼로 정의,
 화면에 내용에 보이지 않지만 그래픽 프로세서가 기록중인 버퍼가 백버퍼이다.
 따라서 버퍼는 프론트버퍼와 백버퍼를 반복한다.

--> 두개의 버퍼를 분리하여 쓸때는 쓰기만, 읽을때는 읽기만 하여 완전히 준비된 영상을 사용함으로써 깜박거림을 방지한다.

*더블 버퍼링은 버퍼를 두개 사용함으로, 두 배의 메모리 필요하다.

728x90