Поделиться через


Метод 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

См. также раздел

ID3D12DeviceChild