ID3D12Device::CreateDescriptorHeap メソッド (d3d12.h)

記述子ヒープ オブジェクトを作成します。

構文

HRESULT CreateDescriptorHeap(
  [in]  const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
        REFIID                           riid,
  [out] void                             **ppvHeap
);

パラメーター

[in] pDescriptorHeapDesc

型: const D3D12_DESCRIPTOR_HEAP_DESC*

ヒープを記述 するD3D12_DESCRIPTOR_HEAP_DESC 構造体へのポインター。

riid

型: REFIID

記述子ヒープ インターフェイスのグローバル一意識別子 (GUID)。 「解説」を参照してください。 入力パラメーター。

[out] ppvHeap

型: void**

記述子ヒープへのポインターを受け取るメモリ ブロックへのポインター。 ppvHeap を NULL にして、機能テストを有効にすることができます。 ppvHeap が NULL の場合、オブジェクトは作成されません。pDescriptorHeapDesc が有効な場合、S_FALSEが返されます。

戻り値

型: HRESULT

記述子ヒープ オブジェクトを作成するのに十分なメモリがない場合、このメソッドは E_OUTOFMEMORY を返します。 その他の可能な戻り値については、「戻りコードのDirect3D 12」を参照してください。

解説

記述子ヒープへのインターフェイスの REFIID ( GUID) は、__uuidof() マクロを使用して取得できます。 たとえば、__uuidof(ID3D12DescriptorHeap) は、インターフェイスの GUID を 記述子ヒープに取得します。

D3D12HelloWorld サンプルでは、次のように ID3D12Device::CreateDescriptorHeap を使用します。

レンダー ターゲット ビュー (RTV) 記述子ヒープについて説明し、作成します。

// Create descriptor heaps.
{
    // Describe and create a render target view (RTV) descriptor heap.
    D3D12_DESCRIPTOR_HEAP_DESC rtvHeapDesc = {};
    rtvHeapDesc.NumDescriptors = FrameCount;
    rtvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
    rtvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
    ThrowIfFailed(m_device->CreateDescriptorHeap(&rtvHeapDesc, IID_PPV_ARGS(&m_rtvHeap)));

    m_rtvDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
}

// Create frame resources.
{
    CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart());

    // Create a RTV for each frame.
    for (UINT n = 0; n < FrameCount; n++)
    {
        ThrowIfFailed(m_swapChain->GetBuffer(n, IID_PPV_ARGS(&m_renderTargets[n])));
        m_device->CreateRenderTargetView(m_renderTargets[n].Get(), nullptr, rtvHandle);
        rtvHandle.Offset(1, m_rtvDescriptorSize);
    }

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

要件

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

関連項目

ID3D12Device