다음을 통해 공유


ID3D11On12Device2::UnwrapUnderlyingResource 메서드(d3d11on12.h)

Direct3D 11 리소스 개체를 래프 해제하고 Direct3D 12 리소스 개체로 검색합니다.

구문

HRESULT UnwrapUnderlyingResource(
  [in]  ID3D11Resource     *pResource11,
  [in]  ID3D12CommandQueue *pCommandQueue,
  [in]  REFIID             riid,
  [out] void               **ppvResource12
);

매개 변수

[in] pResource11

형식: ID3D11Resource*

래프 해제할 Direct3D 11 리소스 개체입니다.

[in] pCommandQueue

형식: ID3D12CommandQueue*

애플리케이션이 리소스를 사용할 계획인 명령 큐입니다. 리소스에 액세스하는 보류 중인 작업으로 인해 펜스 대기가 이 큐에서 예약됩니다. 그런 다음 호출자 소유 펜스의 신호를 포함하여 이 큐에서 추가 작업을 큐에 대기할 수 있습니다.

[in] riid

형식: REFIID

에서 반환하려는 인터페이스의 GUID(Globally Unique Identifier)에 ppvResource12대한 참조입니다.

[out] ppvResource12

형식: void**

Direct3D 12 리소스에 대한 포인터를 수신하는 메모리 블록에 대한 포인터입니다.

반환 값

형식: HRESULT

함수가 성공하면 S_OK를 반환합니다. 그렇지 않으면 HRESULT오류 코드를 반환합니다.

설명

리소스가 D3D12_RESOURCE_STATE_COMMON 전환되고(해당 상태가 아닌 경우) 적절한 대기가 명령 큐(pCommandQueue)에 삽입됩니다.

래핑 해제할 수 있는 항목에는 키 지정 뮤텍스 리소스, GDI 호환 리소스 및 버퍼 없음과 같은 몇 가지 제한 사항이 있습니다. 그러나 UnwrapUnderlyingResource를 사용하여 ID3D11On12Device::CreateWrappedResource 메서드를 통해 만든 리소스와 ID3D11Device::CreateTexture2D를 통해 만든 리소스를 래핑 해제할 수 있습니다.

일반적으로 Direct3D 11에서 개체를 다시 사용하기 전에 Direct3D11on12로 반환해야 합니다( ID3D11On12Device2::ReturnUnderlyingResource 참조).

UnwrapUnderlyingResource를 사용하여 스왑 체인 버퍼의 래핑을 해제할 수도 있습니다. 또한 Present 를 호출하기 전에(또는 리소스를 사용하여) 리소스를 Direct3D11on12로 반환해야 합니다.

리소스 래핑 해제는 Direct3D11On12 변환 계층에서 리소스를 체크 아웃합니다. 리소스를 체크 아웃하는 동안(두 버전의 API를 통해) 번역 계층 사용량을 예약하지 않을 수 있습니다. ID3D11On12Device2::ReturnUnderlyingResource를 사용하여 리소스를 다시 체크 인(리소스 반환이라고도 함)합니다.

UnwrapUnderlyingResource 는 플러시되지 않으며 GPU 작업을 예약할 수 있습니다. 외부에서 완료를 기다리는 경우 UnwrapUnderlyingResource를 호출한 후 플러시해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 버전 2004(10.0; 빌드 19041)
지원되는 최소 서버 Windows Server 버전 2004(10.0; 빌드 19041)
머리글 d3d11on12.h
라이브러리 D3D11.lib
DLL D3D11.dll

추가 정보