렌더 타겟(Render Target)
- 말 그대로 Device가 렌더링을 수행할 타겟이 되는 텍스쳐이다. 이미 우리가 알고 있듯이 DirectX에선 Resource를 파이프라인에 직접 바인딩하는 것이 아니라, 그 Resource의 View를 바인딩 해야 한다. 예를 들어, 화면에 무언가 그려내기 위해서는 백버퍼에 그려야 하는데 이 의미는 백버퍼가 렌더 타겟이 된다는 의미이고, 렌더 타겟에 무언가 그리려면 백버퍼에 대한 Render Target View를 Output Merger단계에 바인딩 해야 한다.
백버퍼가 렌더 타겟이 되는 경우가 흔히 아는 경우지만 렌더 타겟을 백버퍼가 아니라 (사용자가 지정한)텍스쳐로 할 수도 있는데, 이때는 렌더링을 텍스쳐의 Surface에 해야 한다.
GetBuffer로 백버퍼를 받을때, 여러 종류의 백버퍼의 인터페이스로 받을 수 있다. 예를 들어 아래처럼 ID3D11Texture2D 타입으로 얻어올 수도 있고,
ID3D11Texture2D* BackBuffer = nullptr;
// SwapChain이 갖고 있는 백버퍼를 얻어온다
m_SwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D),
(void**)&BackBuffer);
아래처럼 IDXGISurface 타입으로 얻어올 수도 있다.
IDXGISurface* BackSurface = nullptr;
m_SwapChain->GetBuffer(0, IID_PPV_ARGS(&BackSurface));
Surface
- 픽셀 정보를 모아 놓은 선형 배열이다.
Texture
- 일반적으로 텍스쳐라고 생각하면 2D 이미지만 떠올리기 쉽지만 이는 다양한 텍스쳐 종류중에 하나인 2D 배열 형태로 각 element에 픽셀 정보를 담고 있는 텍스쳐일 뿐이다. 2D가 아닌 텍스쳐도 존재하며, 각 원소들이 법선 벡터를 갖고 있는 텍스쳐도 있다. 텍스쳐 자체의 형태와 텍스쳐의 원소 타입은 다양하게 존재한다.
Reference
https://lipcoder.tistory.com/10#comment21406359
https://m.blog.naver.com/CommentList.naver?blogId=sorkelf&logNo=40169951915
'공부 > Graphics, DirectX, 포트폴리오 구조' 카테고리의 다른 글
Particle 구현을 위한 Structured Buffer, Compute Shader 그리고 Geometry Shader (0) | 2022.04.01 |
---|---|
Component, Mesh, Matarial간의 관계와 렌더링 과정 요약 필기 (0) | 2022.03.30 |
[포트폴리오 구조] AlphaBlend 적용 방법 (0) | 2021.12.22 |
[포트폴리오 구조] ResourceManager, SceneResource 그리고 각종 Manager들의 관계 (0) | 2021.12.17 |
DirectX의 더블 버퍼링 (0) | 2021.12.07 |