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);
}
要件
対象プラットフォーム | Windows |
ヘッダー | d3d12.h |
Library | D3D12.lib |
[DLL] | D3D12.dll |