더블버퍼링
- 일반적인 비디오 카드에서 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는 프론트버퍼로 스위칭, 새로 화면에 그릴 내용을 버퍼에 쓴다.
*현재 비디오 컨트롤러가 읽고 있는 버퍼를 프론트 버퍼로 정의,
화면에 내용에 보이지 않지만 그래픽 프로세서가 기록중인 버퍼가 백버퍼이다.
따라서 버퍼는 프론트버퍼와 백버퍼를 반복한다.
--> 두개의 버퍼를 분리하여 쓸때는 쓰기만, 읽을때는 읽기만 하여 완전히 준비된 영상을 사용함으로써 깜박거림을 방지한다.
*더블 버퍼링은 버퍼를 두개 사용함으로, 두 배의 메모리 필요하다.
'Software Development > Graphics' 카테고리의 다른 글
컴퓨터 그래픽스 이론 정리 - 좌표계 (0) | 2018.05.06 |
---|---|
컴퓨터 그래픽스 이론 정리 - 정규좌표와 화면좌표 (0) | 2018.05.02 |
컴퓨터 그래픽스 이론 정리 - 컬러이론, 컬러모델 (0) | 2018.04.22 |
게임을 움직이는 수학과 물리 4장 - 2차원 (0) | 2018.02.04 |
OpenGL SuperBilbe Chapter3, 파이프라인을 마치며.. (1) | 2018.01.27 |