Compartilhar via


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

Confira também

ID3D12Device