그래픽스/DirectX11

RenderTargetView의 의미

readme.md 2024. 4. 19. 10:44

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를 통해 스왑 체인의 백 버퍼에 접근할 수 있으며, 원하는 방식으로 렌더링 작업을 할 수 있게 됐다.