Partager via


ID3D12Device ::CreateShaderResourceView, méthode (d3d12.h)

Crée une vue nuanceur-ressource pour accéder aux données d’une ressource.

Syntaxe

void CreateShaderResourceView(
  [in, optional] ID3D12Resource                        *pResource,
  [in, optional] const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
  [in]           D3D12_CPU_DESCRIPTOR_HANDLE           DestDescriptor
);

Paramètres

[in, optional] pResource

Type : ID3D12Resource*

Pointeur vers l’objet ID3D12Resource qui représente la ressource du nuanceur.

Au moins un de pResource ou pDesc doit être fourni. Un pResource null est utilisé pour initialiser un descripteur null, qui garantit un comportement de liaison null de type D3D11 (lecture 0s, les écritures sont ignorées), mais doit avoir un pDesc valide pour déterminer le type de descripteur.

[in, optional] pDesc

Type : const D3D12_SHADER_RESOURCE_VIEW_DESC*

Pointeur vers une structure D3D12_SHADER_RESOURCE_VIEW_DESC qui décrit l’affichage nuanceur-ressource.

Un pDesc null est utilisé pour initialiser un descripteur par défaut, si possible. Ce comportement est identique au comportement de descripteur null D3D11, où les valeurs par défaut sont renseignées. Ce comportement hérite du format et de la dimension de ressource (s’il n’est pas typé) et pour les mémoires tampons, les SMV ciblent une mémoire tampon complète et sont typées (non brutes ou structurées), et pour les textures, les SSR ciblent une texture complète, tous les mips et toutes les tranches de tableau. Toutes les ressources ne prennent pas en charge l’initialisation du descripteur Null.

[in] DestDescriptor

Type : D3D12_CPU_DESCRIPTOR_HANDLE

Décrit le handle de descripteur d’UC qui représente l’affichage nuanceur-ressource. Ce handle peut être créé dans un tas de descripteur de nuanceur visible ou non-nuanceur-visible.

Valeur de retour

None

Remarques

Traitement des formats vidéo YUV 4 :2 :0

Une application doit mapper le plan luma (Y) séparément des plans de chroma (UV). Pour ce faire, les développeurs appellent CreateShaderResourceView deux fois pour la même texture et transmettent les formats 1 canal et 2 canaux. Le passage dans un format à 1 canal compatible avec le plan Y mappe uniquement le plan Y. Le passage d’un format à 2 canaux compatibles avec les plans UV (ensemble) ne mappe que les plans you et V en tant qu’affichage de ressource unique.

Les formats YUV 4 :2 :0 sont répertoriés dans DXGI_FORMAT.

Exemples

L’exemple D3D12nBodyGravity utilise ID3D12Device ::CreateShaderResourceView comme suit :

Décrire et créer deux vues de ressources de nuanceur basées sur une seule description.

D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
srvDesc.Format = DXGI_FORMAT_UNKNOWN;
srvDesc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
srvDesc.Buffer.FirstElement = 0;
srvDesc.Buffer.NumElements = ParticleCount;
srvDesc.Buffer.StructureByteStride = sizeof(Particle);
srvDesc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;

CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle0(m_srvUavHeap->GetCPUDescriptorHandleForHeapStart(), SrvParticlePosVelo0 + index, m_srvUavDescriptorSize);
CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle1(m_srvUavHeap->GetCPUDescriptorHandleForHeapStart(), SrvParticlePosVelo1 + index, m_srvUavDescriptorSize);
m_device->CreateShaderResourceView(m_particleBuffer0[index].Get(), &srvDesc, srvHandle0);
m_device->CreateShaderResourceView(m_particleBuffer1[index].Get(), &srvDesc, srvHandle1);

Reportez-vous à l’exemple de code dans la référence D3D12.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête d3d12.h
Bibliothèque D3D12.lib
DLL D3D12.dll

Voir aussi

ID3D12Device