PFND3D11DDI_SETRENDERTARGETS 콜백 함수(d3d10umddi.h)
SetRenderTargets(D3D11) 함수는 렌더링 대상 표면을 설정합니다.
구문
PFND3D11DDI_SETRENDERTARGETS Pfnd3d11ddiSetrendertargets;
void Pfnd3d11ddiSetrendertargets(
[in] D3D10DDI_HDEVICE unnamedParam1,
[in] const D3D10DDI_HRENDERTARGETVIEW *unnamedParam2,
[in] UINT NumRTVs,
[in] UINT ClearSlots,
[in] D3D10DDI_HDEPTHSTENCILVIEW unnamedParam5,
[in] const D3D11DDI_HUNORDEREDACCESSVIEW *unnamedParam6,
[in] const UINT *unnamedParam7,
UINT UAVStartSlot,
[in] UINT NumUAVs,
[in] UINT UAVRangeStart,
[in] UINT UAVRangeSize
)
{...}
매개 변수
[in] unnamedParam1
hDevice: 디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.
[in] unnamedParam2
phRenderTargetView: 설정할 RTV(렌더링 대상 뷰) 개체에 대한 핸들 배열입니다. 일부 핸들 값은 NULL일 수 있습니다.
[in] NumRTVs
설정할 RTV에 대한 phRenderTargetView 에 제공된 배열의 요소 수입니다.
[in] ClearSlots
바인딩 해제할 RTV 개체의 수입니다. 즉, 이전에 바인딩되었지만 더 이상 바인딩할 필요가 없는 렌더링 대상 뷰 개체입니다.
[in] unnamedParam5
hDepthStencilView: 설정할 깊이 스텐실 버퍼에 대한 핸들입니다.
[in] unnamedParam6
phUnorderedAccessView: 설정할 UAV(순서가 지정되지 않은 액세스 뷰) 개체에 대한 핸들 배열입니다.
[in] unnamedParam7
pUAVInitialCounts: 버퍼 오프셋을 추가하고 사용하는 배열입니다. 이 매개 변수는 UAV를 만들 때 D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW 구조체의 Flags 멤버에 설정된 D3D11_DDI_BUFFER_UAV_FLAG_APPEND 또는 D3D11_DDI_BUFFER_UAV_FLAG_COUNTER 사용하여 만든 phUnorderedAccessView 배열의 UAV와만 관련이 있습니다. 그렇지 않으면 무시됩니다. 이 배열의 요소가 -1로 설정된 경우 해당 추가 및 소비 버퍼에 대한 현재 오프셋을 유지해야 합니다. 다른 값으로 인해 드라이버는 해당 UAV 추가에 대한 숨겨진 카운터를 설정하고 버퍼를 사용합니다.
UAVStartSlot
바인딩할 첫 번째 UAV의 인덱스입니다. UAVStartSlot 은 NumRTV 매개 변수만큼 훌륭해야 합니다.
참고
RTV 및 UAV에 대해 하나의 공유 바인딩 지점 집합만 존재합니다. RTV가 먼저 바인딩되고 UAV가 그 뒤를 잇습니다.
[in] NumUAVs
바인딩할 UAV 수입니다.
[in] UAVRangeStart
업데이트된 모든 UAV 집합의 첫 번째 UAV( NULL 바인딩 포함)입니다.
[in] UAVRangeSize
업데이트된 모든 UAV 집합의 UAV 수( NULL 바인딩 포함)입니다.
반환 값
없음
설명
셰이더가 읽기 또는 쓰기를 위해 액세스하려면 RTV 및 UAV와 같은 리소스 설명자가 바인딩되어야 합니다( 입력 슬롯에 배치).
다음 이미지는 5개의 리소스가 있는 예제를 보여 줍니다.
위의 예제에서는 다음과 같습니다.
- NumRTV = 2
- UAVStartSlot = 2
- NumUAV = 3
NumUAV 및 UAVStartSlot 은 UAV 배열에서 이전에 바인딩된 상태와 관련된 변경 내용을 포함하는 범위를 지정합니다. 범위의 점이 변경되지 않을 수 있습니다.
UAVRangeStart 및 UAVRangeSize 매개 변수는 Direct3D DDI가 항상 모든 항목(변경되지 않은 항목 포함)을 바인딩한다는 점을 감안할 때 실제로 변경된 내용의 범위를 표시하는 편리한 방법입니다. D3D11 런타임은 가능한 최적화를 위한 힌트로 드라이버 작성기에 대한 추가 정보로 애플리케이션을 대신하여 이를 공식화합니다. 일반적으로 D3D11 런타임은 UAVRangeStart 및 UAVRangeSize 값을 사용하여 이 함수를 호출하여 전체 범위를 나타냅니다. 위의 예제 사용:
- 전체 범위를 선택하려면(변경이 발생하지 않음), UAVRangeStart = 2 및 UAVRangeSize = 3.
- 첫 번째 UAV만 변경되었을 수 있음을 나타내기 위해 UAVRangeStart = 2 및 UAVRangeSize = 1입니다.
드라이버는 pfnSetErrorCb 콜백 함수를 사용하여 오류 코드를 설정할 수 있습니다.
D3DDDIERR_DEVICEREMOVED 경우를 제외하고 드라이버에 오류가 발생하지 않아야 합니다. 따라서 드라이버가 pfnSetErrorCb 함수에 대한 호출에서 D3DDDIERR_DEVICEREMOVED 경우를 제외하고 오류를 전달하는 경우 Microsoft Direct3D 런타임은 오류가 중요하다고 결정합니다. 디바이스가 제거된 경우에도 드라이버는 D3DDDIERR_DEVICEREMOVED 반환할 필요가 없습니다. 그러나 디바이스 제거가 SetRenderTargets (일반적으로 발생하지 않아야 함)의 작업을 방해하는 경우 드라이버는 D3DDDIERR_DEVICEREMOVED 반환할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | SetRenderTargets(D3D11)는 Windows 7 운영 체제부터 지원됩니다. |
대상 플랫폼 | 데스크톱 |
머리글 | d3d10umddi.h(D3d10umddi.h 포함) |