記述子ヒープ オブジェクトを作成します。
構文
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 リファレンスのコード例を参照してください。
Requirements
| Requirement | 価値 |
|---|---|
| ターゲット プラットフォーム の | ウィンドウズ |
| Header | d3d12.h |
| Library | D3D12.lib |
| DLL | D3D12.dll |