ID3D12Device::CreateDescriptorHeap, méthode (d3d12.h)
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 tas de descripteur. Consultez la section Notes. Paramètre d'entrée.
[out] ppvHeap
Type : void**
Pointeur vers un bloc de mémoire qui reçoit un pointeur vers le tas de descripteur. ppvHeap peut avoir la valeur NULL pour activer le test des fonctionnalités. 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 tas de descripteur. Pour obtenir d’autres valeurs de retour possibles, consultez Codes de retour Direct3D 12 .
Notes
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 vers un tas de descripteur.
Exemples
L’exemple D3D12HelloWorld utilise ID3D12Device::CreateDescriptorHeap comme suit :
Décrire et créer un tas 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
Plateforme cible | Windows |
En-tête | d3d12.h |
Bibliothèque | D3D12.lib |
DLL | D3D12.dll |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour