일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Stored Procedure
- Dijkstra
- SQL
- 스토어드 프로시저
- String
- 그래프
- 이진탐색
- DP
- two pointer
- MYSQL
- 다익스트라
- Hash
- Trie
- Brute Force
- binary search
- Two Points
- union find
- Today
- Total
codingfarm
기본지식 - 텍스처 자원 뷰(Multisampling) 본문
렌더링 파이프라인에는 텍스처를 묶을(bind) 수 있는 단계(stage)들이 여럿 있다. 흔한 용도는 텍스처를 렌더 대상으로 묶는것(Direct3D가 텍스처에 렌더링 하는경우)과 셰이더 자원으로서 묶는 것(셰이더 안에서 텍스처를 추출하는 경우)이다. 이 두 가지 용도의 텍스처를 생성할 때에는 다음과 같이 텍스처를 묶을 두 파이프라인 단계를 지정한 결속 플래그(bind flag)를 사용한다.
D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE
그런데 사실 텍스처 자원이 파이프라인의 단계에 직접 묶이는 것은 아니다. 실제로는 텍스처가 연관된 자원 뷰를 파이프라인 단계에 묶는다. 어떤 용도이든 Direct3D에서 텍스처를 사용하려면 텍스처의 초기화 시점에서 그 텍스처의 자원 뷰(resource view)를 생성해야 한다. 이러한 추가적인 절차는 효율성을 위한것으로 이런방식을 통해 실행시점 모듈(runtime)과 구동기(driver)가 유효성 점검과 매핑을 뷰 생성 시점에서 수행할 수 있기 때문에 결속 시점에서의 형식 점검이 최소화된다. 고 SDK 문서화에 표현되어있다.
그러므로 텍스처를 렌더 대상 뷰(ID3D11RenderTargetView)와 셰이더 자원 뷰(ID3D11ShaderResourceView) 2개의 뷰를 생성하여 렌더 대상과 셰이더 자원을 사용하는 예제를 구성해야한다.
자원 뷰 들은 본질적으로 두가지 일을 한다.
1. Direct3D에게 자원의 사용방식(즉, 파이프라인의 어떤 단계에 묶을 것인지)을 알려주는것
2. 생성 시점에서 무형식을 지정한 자원 형식의 구체적인 형식을 결정하는 것
후자의 경우, 무형식 자원의 텍스처 원소를 한 파이프라인 단계에서는 부동소수점 값으로 사용하고 다른 단계에서는 정수로서 사용하는 것이 가능함을 뜻한다.
어떤 자원에 대해 특정 뷰를 생성할 수 있으려면 그 자원의 생성 시점에서 해당 결속 플래그를 지정해야 한다. 가령 D3D11_BIND_DEPTH_STENCIL 플래그(텍스처가 깊이, 스텐실 버퍼로서 파이프라인에 묶일 것임을 뜻함)을 지정하지 않고 생성한 자원에 대해서는 ID3D11DepthStencilView를 생성할 수 없다. 무작정 생성을 시도하면 디버그 오류가 발생한다. 텍스처를 렌더 대상과 셰이더 자원으로 사용하는 기법은 추후 학습하겠다.
'computer graphics > DirectX11' 카테고리의 다른 글
기본지식 - 기능수준(feature level) (0) | 2020.11.28 |
---|---|
기본지식 - 다중샘플링(Multisampling) (0) | 2020.11.28 |
기본지식 - 자원과 서술자(Direct3D 12) (0) | 2020.11.28 |
기본 지식 - 깊이 버퍼링(Depth Buffering) (0) | 2020.11.27 |
기본지식 - 교환사슬(Swap Chain)과 더블 버퍼링(Double Buffering) (0) | 2020.11.27 |