개발 지식/디자인패턴

이중버퍼

게임만드는학생 2025. 4. 21. 14:17

 

그래픽스에서 자주 사용되는 개념이다.

 

말그대로 버퍼를 두 개로 사용하며 하나는 그리는 용도, 다른 하나는 읽는 용도이다. 

 

왜 쓰이나?

대표적인 예시는 화면 깜빡임이다.

하나의 버퍼라면 버퍼에 데이터를 저장도 해야하고 그 버퍼를 읽어서 그리기도 해야한다.

그런데 저장하는 도중에 버퍼를 읽는다면 이상하게 그려지거나 깜빡임이 발생할 수 있다.

따라서 버퍼를 두개로 사용하며 다른 버퍼를 읽는 동안 나머지 버퍼에 저장하는 것이다.

그리고 다시 교체하는 방식이다. 

 

포인터로 버퍼를 구현하여 current와 next 버퍼로 포인터만 교체하는 것이 깔끔하다고 한다. 

 

FrameBuffer* buffers[2];

FrameBuffer* cur;
FrameBuffer* next;

void Swap()
{
	FrameBuffer* temp = cur;
    cur=next;
    next=temp;
}

이런식이다. 

 

하지만 직접 저수준 api 즉 opengl 이나 directX를 사용할 것이 아니라면 구현은 할 일이 없다.

왜냐하면 이미 엔진 단에서는 내부적으로 구현되어있으며 적용까지 해주기 떄문이다. 

'개발 지식 > 디자인패턴' 카테고리의 다른 글

업데이트 메서드 패턴  (0) 2025.04.21
게임 루프 패턴  (0) 2025.04.21
상태 패턴  (0) 2025.04.19
싱글턴 패턴  (1) 2025.04.19
관찰자 패턴  (0) 2025.04.18