더블 버퍼링

double buffering


주로 컴퓨터 그래픽에서 사용되는 용어로서, 비디오 메모리만을 사용한 싱글 버퍼링으로 그래픽을 그릴 경우 데이터를 저장하는 동안에는 다음 그림의 데이터를 전송할 수 없기 때문에 지우고 그리고 지우고 그리고 할 경우 필연적으로 발생하는 깜빡임, 찢어짐 등의 상황을 막기 위해서 사용되는 기법이다.

싱글 버퍼링은 비디오 메모리(프론트 버퍼)만을 사용하는데 반하여, 예비 버퍼(백 버퍼)를 두어 먼저 버퍼2에 그림을 보내고 그것을 다시 버퍼1로 보낸 다음 버퍼 1의 데이터를 처리하는 동안 다시 버퍼 2에 그림을 보내면 데이터의 전송과 처리가 막히는 일이 없어져서 깜빡임 현상이 사라지게 되는 것이다.

그래서 비단 게임 뿐만이 아니라 그림을 띄워야 하는 프로그래밍을 해야 할 경우에는 반드시 더블버퍼링 API를 찾아보고 적용하는 일이 필요하다.

단 이 더블 버퍼링도 만능은 아니어서, 만약 그리기 연산의 처리에 지연이 생긴다면 프론트 버퍼에 남아있는 그림이 계속 보여지게 되어 화면이 밀리는 현상이 나오게 된다. 그래서 이를 해결하기 위해 애당초 그림을 널럴하게 그리는 수직동기화 방법과 백 버퍼를 하나 더 추가하여 백버퍼의 데이터를 교대로 받아오는 삼중버퍼링 기법이 생겨나게 되었다.