ID3D12DeviceChild::GetDevice 메서드(d3d12.h)
이 인터페이스를 만든 디바이스에 대한 포인터를 가져옵니다.
구문
HRESULT GetDevice(
REFIID riid,
[out, optional] void **ppvDevice
);
매개 변수
riid
형식: REFIID
디바이스 인터페이스에 대한 GUID(Globally Unique Identifier)입니다. 디바이스에 대한 인터페이스의 REFIID 또는 GUID는 __uuidof() 매크로를 사용하여 가져올 수 있습니다. 예를 들어 __uuidof(ID3D12Device)는 디바이스에 대한 인터페이스의 GUID 를 가져옵니다.
[out, optional] ppvDevice
형식: void**
디바이스의 ID3D12Device 인터페이스에 대한 포인터를 수신하는 메모리 블록에 대한 포인터입니다.
반환 값
형식: HRESULT
이 메서드는 Direct3D 12 반환 코드 중 하나를 반환합니다.
설명
반환된 모든 인터페이스에는 참조 수가 1씩 증가하므로 반환된 포인터가 해제되기 전에 ::release()를 호출해야 합니다. 그렇지 않으면 메모리 누수가 발생합니다.
예제
D3D12Multithreading 샘플은 다음과 같이 ID3D12DeviceChild::GetDevice를 사용합니다.
// Returns required size of a buffer to be used for data upload
inline UINT64 GetRequiredIntermediateSize(
_In_ ID3D12Resource* pDestinationResource,
_In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources)
{
D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
UINT64 RequiredSize = 0;
ID3D12Device* pDevice;
pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
pDevice->Release();
return RequiredSize;
}
요구 사항
대상 플랫폼 | Windows |
헤더 | d3d12.h |
라이브러리 | D3D12.lib |
DLL | D3D12.dll |