Метод ID3D12DeviceChild::GetDevice (d3d12.h)
Получает указатель на устройство, создающее этот интерфейс.
HRESULT GetDevice(
REFIID riid,
[out, optional] void **ppvDevice
);
riid
Тип: REFIID
Глобальный уникальный идентификатор (GUID) для интерфейса устройства. Идентификатор REFIID или GUID интерфейса устройства можно получить с помощью макроса __uuidof(). Например, __uuidof(ID3D12Device) получит GUID интерфейса на устройство.
[out, optional] ppvDevice
Тип: void**
Указатель на блок памяти, получающий указатель на интерфейс ID3D12Device для устройства.
Тип: HRESULT
Этот метод возвращает один из кодов возврата Direct3D 12.
Для всех возвращенных интерфейсов количество ссылок увеличивается на единицу, поэтому обязательно вызовите ::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;
}
См. пример кода в справочнике по D3D12.
Целевая платформа | Windows |
Header | d3d12.h |
Библиотека | D3D12.lib |
DLL | D3D12.dll |