다음을 통해 공유


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