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 |