아직 Deferred device context 사용 안해봤는데 이게 내가 이해하기로는 얘를 사용해서 드로우콜들 모아다가 ExecuteCommandList 호출해서 쌓여있는 드로우콜들 한번에 빡 그리는걸로 알고 있음

또 여러개의 Deferred device context를 이용해서 멀티스레드로 렌더 요청을 박아넣을 수도 있는...

이게 맞나?


여튼 첫번째로 궁금한것


대략 예시를 들어보자면 

지연된 컨텍스트 1, 2가 있음

1번 컨텍스트에는 불투명 오브젝트 렌더콜들을 요청하고, 2번 컨텍스트에서는 깊이버퍼를 사용하지 않는 반투명 오브젝트 렌더콜들을 요청함

모든 렌더콜들이 컨텍스트에 저장된 후에 

1번 2번 순서로 ExecuteCommandList 를 호출하지 않으면 반투명 오브젝트들이 불투명 오브젝트에 가려질까?


두번째로 궁금한것


모든 쉐이더에서 사용되는 cbuffer가 있는데 지연된 컨텍스트에 렌더콜을 던질때마다 cbuffer의 내용을 다르게 하여 렌더콜을 던져도 다 적용이 될까?

정확히는 매 드로우콜마다 쉐이더에 적용하는 리소스들이 다르니 이것들이 다 적용된 채로 컨텍스트에 저장될까? 


마지막


어떤 지연된 컨텍스트 하나를 사용한다고 할때

1. a 라는 텍스쳐를 렌더 타겟으로 설정

2. 드로우콜 발사

3. b 라는 텍스쳐를 렌더 타겟으로 변경

4. a 텍스쳐를 쉐이더 리소스로 사용해서 새로운 드로우콜 발사

5. ExecuteCommandList 

이런 상황일때 3번에서 요청한 드로우콜에 사용되는 a 텍스쳐는 2번에서 요청한 드로우콜에 의해서 작업된 텍스쳐일까?


질문이 너무 많고 설명도 븅신같아서 미안함