공부/Graphics, DirectX, 포트폴리오 구조

Texture, Render Target 그리고 Surface란?

sudo 2022. 1. 11. 23:00

렌더 타겟(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가 아닌 텍스쳐도 존재하며, 각 원소들이 법선 벡터를 갖고 있는 텍스쳐도 있다. 텍스쳐 자체의 형태와 텍스쳐의 원소 타입은 다양하게 존재한다.

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sorkelf&logNo=40169951915

 

 

Reference

https://lipcoder.tistory.com/10#comment21406359

 

[DirectX 12] 기본지식 - 텍스처 형식(Texture Type)

2차원 텍스처는 자료 원소들의 행렬(2차원 배열)이다. 2차원 텍스처의 용도 중 하나는 2차원 이미지 자료를 저장하는 것인데, 이때 텍스처의 각 원소는 픽셀 하나의 색상을 담는다. 하지만 텍스처

lipcoder.tistory.com

https://blog.naver.com/PostView.naver?blogId=jsjhahi&logNo=205674657&parentCategoryNo=&categoryNo=15&viewDate=&isShowPopularPosts=false&from=postView 

 

DirectX Render Target ( 랜더 타겟 ), Surface ( 서페이스 )

Render Target이란? - Render Target은 IDirect3Device9가 랜더링을 수행할 Surface를 의미한다. -...

blog.naver.com

https://m.blog.naver.com/CommentList.naver?blogId=sorkelf&logNo=40169951915 

 

댓글 : 네이버 블로그

당신의 모든 기록을 담는 공간

m.blog.naver.com