스왑 체인
Swap chain컴퓨터 그래픽에서 스왑 체인(swapchain, 또한 스왑체인)은 프레임률 안정화와 몇 가지 다른 기능을 위해 그래픽 카드와 그래픽 API에 의해 이용되는 일련의 가상 프레임 버퍼다.스왑 체인은 보통 그래픽 메모리에 존재하지만 시스템 메모리에도 존재할 수 있다.스왑 체인의 비활용은 렌더링을 더듬는 결과를 초래할 수 있지만, 그것의 존재와 활용은 많은 그래픽 API에 의해 요구된다.버퍼 2개가 있는 스왑 체인은 이중 버퍼다.
함수
모든 스왑 체인에는 적어도 두 개의 버퍼가 있다.첫 번째 프레임 버퍼인 스크린 버퍼는 비디오 카드의 출력에 렌더링되는 버퍼다.나머지 버퍼는 백버퍼로 알려져 있다.새 프레임이 표시될 때마다 스왑 체인의 첫 번째 백버퍼가 스크린버퍼를 대신하는데, 이를 프레젠테이션 또는 스와핑이라고 한다.이전 스크린버퍼와 다른 백버퍼에 대해 다양한 다른 조치를 취할 수 있다(있는 경우).스크린버퍼는 단순히 덮어쓰거나 추가 처리를 위해 스왑 체인의 후면에 반환될 수 있다.취한 조치는 클라이언트 어플리케이션에 의해 결정되며 API에 의존한다.
다이렉트3D
Microsoft Direct3D는 SwapChain 클래스를 구현한다.각 호스트 디바이스에는 적어도 하나의 스왑 체인이 할당되어 있으며, 다른 디바이스는 클라이언트 애플리케이션에 의해 생성될 수 있다.[1]API는 복사, 폐기, 플립의 세 가지 스와핑 방법을 제공한다.스왑 체인이 뒤집히도록 설정되면 스크린버퍼가 마지막 백버퍼에 복사되고, 그 다음 기존의 모든 백버퍼가 체인에서 앞으로 복사된다.복사를 설정하면 각 백버퍼가 앞으로 복사되지만 스크린버퍼가 마지막 버퍼로 포장되지 않아 변경되지 않는다.화면 버퍼가 한 개만 있는 경우에는 화면 버퍼가 표시되기 전에 유일한 백버퍼 위에 복사되기 때문에 플립이 작동하지 않는다.폐기 모드에서는 운전자가 최선의 방법을 선택한다.[2]
트리플 버퍼링과 비교
Direct3D의 맥락 밖에서 트리플 버퍼링은 응용 프로그램이 가장 최근에 업데이트된 백 버퍼로 끌 수 있도록 하는 기술을 말한다.이를 통해 애플리케이션에서 프레임이 그려지는 속도나 프레임이 디스플레이로 전송되는 속도에 관계없이 애플리케이션은 항상 렌더링을 진행할 수 있다.하나의 프레임을 디스플레이로 전송하는 데 걸리는 시간에 두 개 이상의 새로운 프레임이 완전히 렌더링되는 경우, 트리플 버퍼링은 프레임을 표시하지 않고 폐기하는 결과를 초래할 수 있다.반대로 Direct3D 스왑 체인은 엄격한 선착순 대기열이기 때문에 새로운 프레임을 사용할 수 있더라도 애플리케이션이 그리는 모든 프레임이 표시된다.Direct3D는 가장 최신의 버퍼 스와핑 전략을 구현하지 않으며 마이크로소프트의 문서에서는 3개의 버퍼로 구성된 Direct3D 스왑 체인을 "트리플 버퍼링"이라고 부른다.위에서 설명한 트리플 버퍼링은 게임과 같은 인터랙티브 목적에서는 우수하지만, 3개 이상의 버퍼를 가진 다이렉트3D 스왑 체인은 각 프레임을 디코딩하는 데 걸리는 시간이 매우 가변적일 수 있는 비디오의 프레임을 제시하는 등의 작업에 더 적합할 수 있다.[3]
참조
- ^ "SwapChain Class". Microsoft. Retrieved 30 October 2009.
- ^ "Swap Chains". neXe. Retrieved 2015-05-16.
- ^ "Triple Buffering: Why We Love It". AnandTech. Retrieved 27 May 2014.