次の方法で共有


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リターン コードのいずれかを返します

解説

返されたインターフェイスの参照カウントは 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;
}

「D3D12 リファレンス」のコード例を参照してください

要件

   
対象プラットフォーム Windows
ヘッダー d3d12.h
Library D3D12.lib
[DLL] D3D12.dll

関連項目

ID3D12DeviceChild