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의 인덱스입니다. UAVStartSlotNumRTV 매개 변수만큼 훌륭해야 합니다.

참고

RTV 및 UAV에 대해 하나의 공유 바인딩 지점 집합만 존재합니다. RTV가 먼저 바인딩되고 UAV가 그 뒤를 잇습니다.

[in] NumUAVs

바인딩할 UAV의 수입니다.

[in] UAVRangeStart

업데이트된 모든 UAV 집합의 첫 번째 UAV( NULL 바인딩 포함)입니다.

[in] UAVRangeSize

업데이트된 모든 UAV 집합의 UAV 수( NULL 바인딩 포함)입니다.

반환 값

없음

설명

셰이더가 읽기 또는 쓰기를 위해 액세스하려면 RTV 및 UAV와 같은 리소스 설명자가 바인딩되어야 합니다( 입력 슬롯 에 배치).

다음 이미지는 5개의 리소스가 있는 예제를 보여 줍니다.

RTV 및 UAV 예제입니다.

위의 예제에서는 다음과 같습니다.

  • NumRTV = 2
  • UAVStartSlot = 2
  • NumUAV = 3

NumUAVUAVStartSlot 은 UAV 배열에서 이전에 바인딩된 상태와 관련된 변경 내용을 포함하는 범위를 지정합니다. 범위의 포인트는 변경되지 않을 수 있습니다.

UAVRangeStartUAVRangeSize 매개 변수는 Direct3D DDI가 항상 모든 항목(변경되지 않은 항목 포함)을 바인딩하는 경우 실제로 변경된 내용의 범위를 표시하는 편리한 기능입니다. D3D11 런타임은 가능한 최적화를 위한 힌트로 드라이버 작성기에 대한 추가 정보로 애플리케이션을 대신하여 이를 공식화합니다. 일반적으로 D3D11 런타임은 UAVRangeStartUAVRangeSize 값을 사용하여 이 함수를 호출하여 전체 범위를 나타냅니다. 위의 예제 사용:

  • 전체 범위를 선택하려면(변경이 발생하지 않음), 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 포함)

참고 항목

D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW

D3D11DDI_DEVICEFUNCS

pfnSetErrorCb