Metodo ID3D12Device::CreateShaderResourceView (d3d12.h)

Crea una visualizzazione risorsa shader per l'accesso ai dati in una risorsa.

Sintassi

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

Parametri

[in, optional] pResource

Tipo: ID3D12Resource*

Puntatore all'oggetto ID3D12Resource che rappresenta la risorsa shader.

È necessario specificare almeno uno di pResource o pDesc . Un valore pResource null viene usato per inizializzare un descrittore Null, che garantisce un comportamento di associazione Null simile a D3D11 (lettura 0, scritture vengono ignorate), ma deve avere un pDesc valido per determinare il tipo di descrittore.

[in, optional] pDesc

Tipo: const D3D12_SHADER_RESOURCE_VIEW_DESC*

Puntatore a una struttura D3D12_SHADER_RESOURCE_VIEW_DESC che descrive la visualizzazione shader-resource.

Un valore pDesc null viene usato per inizializzare un descrittore predefinito, se possibile. Questo comportamento è identico al comportamento descrittore Null D3D11, in cui le impostazioni predefinite vengono compilate. Questo comportamento eredita il formato della risorsa e la dimensione (se non senza tipi) e per i buffer SRV destinazione un buffer completo e sono tipizzati (non elaborati o strutturati) e per le trame SRV destinazione una trama completa, tutti i mips e tutte le sezioni di matrice. Non tutte le risorse supportano l'inizializzazione del descrittore Null.

[in] DestDescriptor

Tipo: D3D12_CPU_DESCRIPTOR_HANDLE

Descrive l'handle descrittore della CPU che rappresenta la visualizzazione shader-resource. Questo handle può essere creato in un heap del descrittore visibile o non shader visibile.

Valore restituito

nessuno

Osservazioni

Elaborazione dei formati video YUV 4:2:0

Un'app deve mappare il piano luma (Y) separatamente dai piani chroma (UV). Gli sviluppatori eseguono questa operazione chiamando CreateShaderResourceView due volte per la stessa trama e passando in formati da 1 canale e da 2 canali. Passando un formato a 1 canale compatibile con il piano Y mappa solo il piano Y. Il passaggio di un formato a 2 canali compatibile con i piani UV (insieme) esegue il mapping solo dei piani you e V come singola vista risorsa.

I formati YUV 4:2:0 sono elencati in DXGI_FORMAT.

Esempio

L'esempio D3D12nBodyGravity usa ID3D12Device::CreateShaderResourceView come indicato di seguito:

Descrivere e creare due viste delle risorse shader in base a una descrizione.

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);

Fare riferimento al codice di esempio nel riferimento D3D12.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d12.h
Libreria D3D12.lib
DLL D3D12.dll

Vedi anche

ID3D12Device