Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erstellt ein Deskriptor-Heap-Objekt.
Syntax
HRESULT CreateDescriptorHeap(
[in] const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
REFIID riid,
[out] void **ppvHeap
);
Die Parameter
[in] pDescriptorHeapDesc
Typ: const D3D12_DESCRIPTOR_HEAP_DESC*
Ein Zeiger auf eine D3D12_DESCRIPTOR_HEAP_DESC Struktur, die den Heap beschreibt.
riid
Typ: REFIID
Die GUID (Globally Unique Identifier) für die Heap-Schnittstelle des Deskriptors. Weitere Informationen finden Sie in der "Anmerkungen". Ein Eingabeparameter.
[out] ppvHeap
Typ: void**
Ein Zeiger auf einen Speicherblock, der einen Zeiger auf den Deskriptor-Heap empfängt. ppvHeap kann NULL sein, um Funktionstests zu aktivieren. Wenn ppvHeap NULL ist, wird kein Objekt erstellt, und S_FALSE wird zurückgegeben, wenn pDescriptorHeapDesc gültig ist.
Rückgabewert
Typ: HRESULT
Diese Methode gibt E_OUTOFMEMORY zurück, wenn nicht genügend Arbeitsspeicher vorhanden ist, um das Heap-Objekt des Deskriptors zu erstellen. Weitere mögliche Rückgabewerte finden Sie unter Direct3D 12-Rückgabecodes .
Bemerkungen
Die REFIID oder GUID der Schnittstelle zum Deskriptor-Heap kann mithilfe des Makros __uuidof() abgerufen werden. Beispielsweise ruft __uuidof(ID3D12DescriptorHeap) die GUID der Schnittstelle zu einem Deskriptor-Heap ab.
Examples
Das D3D12HelloWorld-Beispiel verwendet ID3D12Device::CreateDescriptorHeap wie folgt:
Beschreiben und Erstellen eines RTV-Deskriptor-Heaps (Renderzielansicht).
// 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);
}
Verweisen Sie auf den Beispielcode in der D3D12-Referenz.
Anforderungen
| Anforderung | Wert |
|---|---|
| Zielplattform | Fenster |
| Header | d3d12.h |
| Library | D3D12.lib |
| DLL | D3D12.dll |