Método ID3D12Device::CreateShaderResourceView (d3d12.h)
Cria uma exibição de sombreador-recurso para acessar dados em um recurso.
Sintaxe
void CreateShaderResourceView(
[in, optional] ID3D12Resource *pResource,
[in, optional] const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
[in] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
);
Parâmetros
[in, optional] pResource
Tipo: ID3D12Resource*
Um ponteiro para o objeto ID3D12Resource que representa o recurso de sombreador.
Pelo menos um pResource ou pDesc deve ser fornecido. Um pResource nulo é usado para inicializar um descritor nulo, que garante o comportamento de associação nula semelhante a D3D11 (leitura 0s, gravações são descartadas), mas deve ter um pDesc válido para determinar o tipo de descritor.
[in, optional] pDesc
Tipo: const D3D12_SHADER_RESOURCE_VIEW_DESC*
Um ponteiro para uma estrutura D3D12_SHADER_RESOURCE_VIEW_DESC que descreve a exibição sombreador-recurso.
Um pDesc nulo é usado para inicializar um descritor padrão, se possível. Esse comportamento é idêntico ao comportamento do descritor nulo D3D11, em que os padrões são preenchidos. Esse comportamento herda o formato e a dimensão do recurso (se não for sem tipo) e para buffers OS SRVs têm como destino um buffer completo e são digitados (não brutos ou estruturados) e, para texturas, os SRVs visam uma textura completa, todos os mips e todas as fatias de matriz. Nem todos os recursos dão suporte à inicialização do descritor nulo.
[in] DestDescriptor
Tipo: D3D12_CPU_DESCRIPTOR_HANDLE
Descreve o identificador do descritor de CPU que representa a exibição sombreador-recurso. Esse identificador pode ser criado em um heap de descritor visível ou não visível para sombreador.
Retornar valor
Nenhum
Comentários
Processando formatos de vídeo YUV 4:2:0
Um aplicativo deve mapear o plano luma (Y) separadamente dos planos chroma (UV). Os desenvolvedores fazem isso chamando CreateShaderResourceView duas vezes para a mesma textura e passando formatos de 1 canal e 2 canais. Passar um formato de 1 canal compatível com o plano Y mapeia apenas o plano Y. Passar um formato de dois canais compatível com os planos UV (juntos) mapeia apenas os planos de você e V como uma única exibição de recurso.Os formatos YUV 4:2:0 são listados em DXGI_FORMAT.
Exemplos
O exemplo D3D12nBodyGravity usa ID3D12Device::CreateShaderResourceView da seguinte maneira:
Descrever e criar duas exibições de recurso de sombreador com base em uma descrição.
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);
Consulte o código de exemplo na referência D3D12.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d12.h |
Biblioteca | D3D12.lib |
DLL | D3D12.dll |