DX에는 View
라는 접미사가 붙은 인터페이스가 여러개 있다. View
라는 단어는 DX의 파이프라인에서 사용할 어떤 자원을 들여다 보는 것을 의미한다. DX에서는 일관된 방식으로 리소스를 접근하고 사용하기 위해 View
인터페이스를 사용한다. 특정 자원을 그대로 DX의 렌더링 파이프라인에서 사용할 수 없다는 것이다.
예를 들어 화면에 렌더링을 하기 위한 목적으로 스왑 체인을 만들었다면, 스왑 체인을 구성하는 백 버퍼들이 GPU의 메모리 상에만 존재하고 있고 이것을 DX의 렌더링 파이프라인에서 바로 사용할 수 없다는 것이다.
RenderTargetView
는 DX의 파이프라인에서 렌더링 타겟을 설정하기 위한 통일된 인터페이스다. 스왑 체인을 화면 렌더링 용도로 만들었다면, 이 스왑 체인이 가지고 있는 버퍼를 이용해 RenderTargetView
를 만들어야 비로소 렌더링을 할 수 있는 환경이 갖추어지게 된 것이다. 화면 렌더링 용도로 만든 스왑 체인을 이용해 RenderTargetView
를 만드는 과정은 다음과 같다.
// DX11 RenderTargetView
ComPtr<ID3D11RenderTargetView> m_renderTargetView;
// 스왑 체인의 백 버퍼를 저장하기 위한 임시 변수
ID3D11Texture2D *pBackBuffer;
// ID3D11RenderTargetView 형식으로 0번 인덱스 백 버퍼를 받아옴
m_swapchain->GetBuffer(GetBuffer(0, IID_PPV_ARGS(&pBackBuffer));
m_device->CreateRenderTargetView(pBackBuffer, NULL, &m_renderTargetView);
// 백 버퍼 해제
pBackBuffer->Release();
우리가 타겟으로 설정할 대상이 스왑 체인이 가지고 있는 백 버퍼이기 때문에 스왑 체인으로부터 백 버퍼를 받아오고, 이를 사용해 DX11에서 사용할 수 있는 RenderTargetView
를 만드는 코드이다. 이제 DX의 렌더링 파이프라인에서 RenderTargetView
를 통해 스왑 체인의 백 버퍼에 접근할 수 있으며, 원하는 방식으로 렌더링 작업을 할 수 있게 됐다.
'그래픽스 > DirectX11' 카테고리의 다른 글
쉐이더 만들기(버텍스, 픽셀) (0) | 2024.04.22 |
---|---|
버텍스 버퍼, 인덱스 버퍼, 컨스턴트 버퍼 (0) | 2024.04.22 |
DXGI_SWAP_CHAIN_DESC에 관하여 (1) | 2024.04.19 |
ID3D11Device 초기화, 생성 팁 (0) | 2024.04.16 |
DirectX에서의 COM(Component Object Model) (0) | 2024.04.15 |