ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews 메서드(d3d11.h)
출력 병합기에 리소스를 바인딩합니다.
구문
void OMSetRenderTargetsAndUnorderedAccessViews(
[in] UINT NumRTVs,
[in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
[in, optional] ID3D11DepthStencilView *pDepthStencilView,
[in] UINT UAVStartSlot,
[in] UINT NumUAVs,
[in, optional] ID3D11UnorderedAccessView * const *ppUnorderedAccessViews,
[in, optional] const UINT *pUAVInitialCounts
);
매개 변수
[in] NumRTVs
형식: UINT
바인딩할 렌더링 대상의 수(0에서 D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT 사이의 범위). 이 매개 변수가 0이 아닌 경우 ppRenderTargetViews 가 가리키는 배열의 항목 수는 이 매개 변수의 수와 같아야 합니다. NumRTV를 D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL(0xffffffff)로 설정하는 경우 이 메서드는 현재 바인딩된 RTV(렌더링 대상 뷰)를 수정하지 않으며 DSV(깊이 스텐실 뷰)도 수정하지 않습니다.
[in, optional] ppRenderTargetViews
디바이스에 바인딩할 렌더링 대상을 나타내는 ID3D11RenderTargetView의 배열에 대한 포인터입니다. 이 매개 변수가 NULL 이고 NumRTV 가 0이면 렌더링 대상이 바인딩되지 않습니다.
[in, optional] pDepthStencilView
디바이스에 바인딩할 깊이 스텐실 보기를 나타내는 ID3D11DepthStencilView 에 대한 포인터입니다. 이 매개 변수가 NULL이면 깊이 스텐실 보기가 바인딩되지 않습니다.
[in] UAVStartSlot
형식: UINT
순서가 지정되지 않은 액세스 뷰(0에서 D3D11_PS_CS_UAV_REGISTER_COUNT - 1까지의 범위) 설정을 시작하려면 0부터 시작하는 배열로 인덱싱합니다.
Windows 8 시작하는 Direct3D 11.1 런타임의 경우 이 값은 0에서 D3D11_1_UAV_SLOT_COUNT - 1까지 다양할 수 있습니다. D3D11_1_UAV_SLOT_COUNT 64로 정의됩니다.
픽셀 셰이더의 경우 UAVStartSlot 은 바인딩되는 렌더링 대상 뷰 수와 같아야 합니다.
[in] NumUAVs
형식: UINT
ppUnorderedAccessViews의 UAV(순서가 지정되지 않은 액세스 뷰) 수입니다. NumUAV를 D3D11_KEEP_UNORDERED_ACCESS_VIEWS(0xffffffff)로 설정하는 경우 이 메서드는 현재 바인딩된 순서가 지정되지 않은 액세스 뷰를 수정하지 않습니다.
Windows 8 시작하는 Direct3D 11.1 런타임의 경우 이 값은 0에서 D3D11_1_UAV_SLOT_COUNT - UAVStartSlot까지 다양할 수 있습니다.
[in, optional] ppUnorderedAccessViews
형식: ID3D11UnorderedAccessView*
디바이스에 바인딩할 순서가 지정되지 않은 액세스 보기를 나타내는 ID3D11UnorderedAccessView의 배열에 대한 포인터입니다. 이 매개 변수가 NULL 이고 NumUAV 가 0이면 순서가 지정되지 않은 액세스 뷰가 바인딩되지 않습니다.
[in, optional] pUAVInitialCounts
형식: const UINT*
버퍼 오프셋을 추가하고 사용하는 배열입니다. -1 값은 현재 오프셋을 유지하도록 나타냅니다. 다른 값은 추가 가능하고 소모성 있는 UAV에 대한 숨겨진 카운터를 설정합니다. pUAVInitialCounts 는 UAV 를 만들 때 지정된 D3D11_BUFFER_UAV_FLAG_APPEND 또는 D3D11_BUFFER_UAV_FLAG_COUNTER 사용하여 만든 UAV와만 관련이 있습니다. 그렇지 않으면 인수가 무시됩니다.
반환 값
없음
설명
픽셀 셰이더의 경우 렌더링 대상 및 순서가 지정되지 않은 액세스 뷰는 기록될 때 동일한 리소스 슬롯을 공유합니다. 즉, UAV는 바인딩되는 렌더링 대상 뷰 다음에 슬롯에 배치되도록 오프셋을 제공해야 합니다.
두 UAV는 하위 리소스를 공유하여 동일한 리소스를 공유하는 경우 충돌합니다.
RTV는 하위 리소스를 공유하거나 바인딩 지점을 공유하는 경우 UAV와 충돌합니다.
OMSetRenderTargetsAndUnorderedAccessViews 는 다음과 같은 상황에서 제대로 작동합니다.
-
NumRTV != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL 및 NumUAV != D3D11_KEEP_UNORDERED_ACCESS_VIEWS
OMSetRenderTargetsAndUnorderedAccessViews가 성공하고 런타임이 드라이버에 바인딩 정보를 전달하려면 다음 조건이 충족되어야 합니다.
- NumRTV<= 8
- UAVStartSlot>= NumRTV
- UAVStartSlot + NumUAV<= 8
- 모든 ppRenderTargetViews 및 ppUnorderedAccessViews 집합에는 충돌이 없어야 합니다.
- ppDepthStencilView 는 렌더링 대상 뷰와 일치해야 합니다. 리소스 뷰에 대한 자세한 내용은 Direct3D 11의 리소스 소개를 참조하세요.
- 현재 바인딩된 충돌하는 모든 리소스(SOTargets(스트림 출력 대상 리소스), CS(컴퓨팅 셰이더) UAV, SRV(셰이더 리소스 뷰))를 바인딩 해제합니다.
- ppRenderTargetViews, ppDepthStencilView 및 ppUnorderedAccessViews를 바인딩합니다.
-
NumRTV == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL
이 경우 OMSetRenderTargetsAndUnorderedAccessViews 는 UAV만 바인딩합니다.
OMSetRenderTargetsAndUnorderedAccessViews가 성공하고 런타임이 드라이버에 바인딩 정보를 전달하려면 다음 조건이 충족되어야 합니다.
- UAVStartSlot + NumUAV<= 8
- ppUnorderedAccessViews에는 충돌이 없어야 합니다.
- 슬롯의 >모든 RTV = UAVStartSlot
- ppUnorderedAccessViews의 UAV와 충돌하는 모든 RTV
- ppUnorderedAccessViews와 충돌하는 현재 바인딩된 모든 리소스(SOTargets, CS UAV, SRV)
OMSetRenderTargetsAndUnorderedAccessViews 는 ppDepthStencilView를 무시하고 현재 깊이 스텐실 보기는 바인딩된 상태로 유지됩니다.
-
NumUAV == D3D11_KEEP_UNORDERED_ACCESS_VIEWS
이 경우 OMSetRenderTargetsAndUnorderedAccessViews 는 RTV 및 DSV만 바인딩합니다.
OMSetRenderTargetsAndUnorderedAccessViews가 성공하고 런타임이 드라이버에 바인딩 정보를 전달하려면 다음 조건이 충족되어야 합니다.
- NumRTV<= 8
- ppRenderTargetViews에는 충돌이 없어야 합니다.
- ppDepthStencilView 는 렌더링 대상 뷰와 일치해야 합니다. 리소스 뷰에 대한 자세한 내용은 Direct3D 11의 리소스 소개를 참조하세요.
- 슬롯 NumRTV의 < 모든 UAV
- ppRenderTargetViews의 RTV와 충돌하는 모든 UAV
- ppRenderTargetViews와 충돌하는 현재 바인딩된 모든 리소스(SOTargets, CS UAV, SRV)
OMSetRenderTargetsAndUnorderedAccessViews는UAVStartSlot을 무시합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | d3d11.h |
라이브러리 | D3D11.lib |