그래픽스에서 자주 사용되는 개념이다.
말그대로 버퍼를 두 개로 사용하며 하나는 그리는 용도, 다른 하나는 읽는 용도이다.
왜 쓰이나?
대표적인 예시는 화면 깜빡임이다.
하나의 버퍼라면 버퍼에 데이터를 저장도 해야하고 그 버퍼를 읽어서 그리기도 해야한다.
그런데 저장하는 도중에 버퍼를 읽는다면 이상하게 그려지거나 깜빡임이 발생할 수 있다.
따라서 버퍼를 두개로 사용하며 다른 버퍼를 읽는 동안 나머지 버퍼에 저장하는 것이다.
그리고 다시 교체하는 방식이다.
포인터로 버퍼를 구현하여 current와 next 버퍼로 포인터만 교체하는 것이 깔끔하다고 한다.
FrameBuffer* buffers[2];
FrameBuffer* cur;
FrameBuffer* next;
void Swap()
{
FrameBuffer* temp = cur;
cur=next;
next=temp;
}
이런식이다.
하지만 직접 저수준 api 즉 opengl 이나 directX를 사용할 것이 아니라면 구현은 할 일이 없다.
왜냐하면 이미 엔진 단에서는 내부적으로 구현되어있으며 적용까지 해주기 떄문이다.