Compartir a través de


Método ID3D12Device::CreateShaderResourceView (d3d12.h)

Crea una vista de recursos de sombreador para acceder a los datos de un recurso.

Sintaxis

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*

Puntero al objeto ID3D12Resource que representa el recurso del sombreador.

Se debe proporcionar al menos uno de pResource o pDesc . Un valor pResource null se usa para inicializar un descriptor NULL, que garantiza el comportamiento de enlace null similar a D3D11 (lectura 0, se descartan las escrituras), pero debe tener un pDesc válido para determinar el tipo de descriptor.

[in, optional] pDesc

Tipo: const D3D12_SHADER_RESOURCE_VIEW_DESC*

Puntero a una estructura de D3D12_SHADER_RESOURCE_VIEW_DESC que describe la vista sombreador-recurso.

Se usa un pDesc null para inicializar un descriptor predeterminado, si es posible. Este comportamiento es idéntico al comportamiento del descriptor null D3D11, donde se rellenan los valores predeterminados. Este comportamiento hereda el formato de recurso y la dimensión (si no son sin tipos) y para los búferes tienen como destino un búfer completo y están tipados (no sin formato o estructurados), y para las texturas SRV tienen como destino una textura completa, todos los mips y todos los segmentos de matriz. No todos los recursos admiten la inicialización de descriptores NULL.

[in] DestDescriptor

Tipo: D3D12_CPU_DESCRIPTOR_HANDLE

Describe el identificador del descriptor de CPU que representa la vista sombreador-recurso. Este identificador se puede crear en un montón de descriptores visibles o no visibles para sombreador.

Valor devuelto

None

Observaciones

Procesamiento de formatos de vídeo YUV 4:2:0

Una aplicación debe asignar el plano luma (Y) por separado de los planos cromáticos (UV). Los desarrolladores lo hacen llamando a CreateShaderResourceView dos veces para la misma textura y pasando formatos de 1 canal y 2 canales. Pasar un formato de canal 1 compatible con el plano Y solo asigna el plano Y. Pasar un formato de 2 canales compatible con los planos UV (juntos) solo asigna los planos you y V como una sola vista de recursos.

Los formatos YUV 4:2:0 se enumeran en DXGI_FORMAT.

Ejemplos

El ejemplo D3D12nBodyGravity usa ID3D12Device::CreateShaderResourceView de la siguiente manera:

Describir y crear dos vistas de recursos de sombreador basadas en una descripción.

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 el código de ejemplo en la referencia D3D12.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d12.h
Library D3D12.lib
Archivo DLL D3D12.dll

Consulte también

ID3D12Device