컴퓨터 프로그래밍 공부/디자인 패턴

이중 패턴

뽀또치즈맛 2025. 8. 10. 20:57

(간단한) 컴퓨터 그래픽스 작동 원리

컴퓨터 모니터 같은 비디오 디스플레이는 한 번에 한 픽셀을 그린다.
화면 왼쪽에서 오른쪽으로 한 줄을 그린 후 디음 줄로 내려간다.
화면 우하단에 도달하면 다시 죄장단으로 돌아가서 같은ㅍ작업을 반복한다.
너무 빠르기 때문에 (1 초에 60 번 정도) 눈으로는 이 과정을 알아첼 수 없고,
픽셀들로 이루어진 정적인 이미지를 보게 된다.
이 과정은 픽셀들을 좁은 호스를 통해 화면에 전달하는 것과 유사하다.
각각의 색은 하나씩 비트별로 순서대로 호스를 통과해서 화면에 뿌려진다.
그럼 호스는 어떤 색을 어디에 뿌려야 할지 어떻게 알고 있을까?
대부분의 컴퓨터에서는 픽셀을 프레임버퍼로부터 가져오기 때문에 알 수 있다.
프레임 버퍼는 메모리에 할당된 픽셀들의 배열로, 한 픽셀의 색을 여러 바이트로 표현한 RAM의 한 부분이다.
호스는 화면에 색을 뿌릴 때 프레임 부터 한 바이트 씩 색깔 값을 읽어온다.

궁극적으로 게임을 화면에 보여주려면 프레임버퍼에 값을 써 넣으면 된다.
온갖 심오한 그래픽 알고리즘도 결국에는 프레임버퍼에 값을 써 넣기 위해 존재한다.
다만 사소한 문제가 하나있다.

앞에서 컴퓨터는 순차적이라 했다. 렌더링 코드가 실행되는 동안 다른 작업은 실행되지 않을 거라고 생각한다.
보통은 맞는 얘기지만 렌더링 도중에 실행되는 작업이 일부 있다.
그중 하나가 게임이 실행되는 동안 비디오 디스플레이가 프레임버퍼를 반복해서 읽는 것인데, 여기에서 문제가 발생한다.

이 문제 중 하나가 테어링이다.
이 문제를 해결하는 것이 이중패턴이다.

그림을 다 그린 후 화면 깜박임에 맞춰 버퍼를 바꾸는 이중패턴으로 테어링을 방지할 수 있다.