Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Crée un objet de tas de descripteur.
Syntaxe
HRESULT CreateDescriptorHeap(
[in] const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
REFIID riid,
[out] void **ppvHeap
);
Paramètres
[in] pDescriptorHeapDesc
Type : const D3D12_DESCRIPTOR_HEAP_DESC*
Pointeur vers une structure D3D12_DESCRIPTOR_HEAP_DESC qui décrit le tas.
riid
Type : REFIID
Identificateur global unique (GUID) pour l’interface de segment de segment de descripteur. Voir les remarques. Paramètre d’entrée.
[out] ppvHeap
Type : void**
Pointeur vers un bloc de mémoire qui reçoit un pointeur vers le tas du descripteur. ppvHeap peut être NULL pour activer les tests de capacité. Lorsque ppvHeap a la valeur NULL, aucun objet n’est créé et S_FALSE est retourné lorsque pDescriptorHeapDesc est valide.
Valeur retournée
Type : HRESULT
Cette méthode retourne E_OUTOFMEMORY si la mémoire est insuffisante pour créer l’objet de tas de descripteur. Consultez les codes de retour Direct3D 12 pour obtenir d’autres valeurs de retour possibles.
Remarques
Le REFIID, ou GUID, de l’interface du tas de descripteur peut être obtenu à l’aide de la macro __uuidof(). Par exemple, __uuidof(ID3D12DescriptorHeap) obtient le GUID de l’interface sur un tas de descripteur.
Examples
L’exemple D3D12HelloWorld utilise ID3D12Device ::CreateDescriptorHeap comme suit :
Décrivez et créez un tas de descripteur de descripteur de vue cible de rendu (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);
}
Reportez-vous à l’exemple de code dans la référence D3D12.
Spécifications
| Requirement | Valeur |
|---|---|
| plateforme cible | Fenêtres |
| Header | d3d12.h |
| Library | D3D12.lib |
| DLL | D3D12.dll |