> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CreateShaderResourceView

> Cria uma exibição de recurso de sombreador para acessar dados em um recurso. (ID3D12Device.CreateShaderResourceView)

Cria uma exibição de recurso de sombreador para acessar dados em um recurso.

## Sintaxe

```cpp theme={null}
void CreateShaderResourceView(
    ID3D12Resource  pResource,
    const D3D12_SHADER_RESOURCE_VIEW_DESC  pDesc,
    D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
)
```

### Parâmetros

*pResource \[in, optional]*<br />Tipo: ID3D12Resource \*

Um ponteiro para o objeto [ID3D12Resource](/pt-BR/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs) que representa o recurso de sombreador.

Pelo menos um entre <i>pResource</i> ou <i>pDesc</i> deve ser fornecido. Um <i>pResource</i> nulo é usado para inicializar um descritor nulo, o que garante um comportamento de associação nula semelhante ao do D3D11 (leituras retornam 0s, gravações são descartadas), mas deve ter um <i>pDesc</i> válido para determinar o tipo de descritor.

*pDesc \[in, optional]*<br />Tipo: const D3D12\_SHADER\_RESOURCE\_VIEW\_DESC \*

Um ponteiro para uma estrutura [D3D12\_SHADER\_RESOURCE\_VIEW\_DESC](/pt-BR/reference/graphics/d3d12/structs/d3d12_shader_resource_view_desc_public) que descreve a exibição de recurso de sombreador.

Um <i>pDesc</i> nulo é usado para inicializar um descritor padrão, se possível. Esse comportamento é idêntico ao comportamento de descritor nulo do 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); para buffers, as SRVs têm como destino um buffer completo e são tipadas (não brutas nem estruturadas) e, para texturas, as SRVs têm como destino uma textura completa, todos os mips e todas as fatias da matriz. Nem todos os recursos dão suporte à inicialização de descritor nulo.

*DestDescriptor \[in]*<br />Tipo: D3D12\_CPU\_DESCRIPTOR\_HANDLE

Descreve o identificador de descritor de CPU que representa a exibição de recurso de sombreador. Esse identificador pode ser criado em um heap de descritores visível ou não visível para sombreadores.

### Valor retornado

Tipo: void

Nenhum.

## Comentários

<h3><a id="Processing_YUV_4_2_0_video_formats" /><a id="processing_yuv_4_2_0_video_formats" /><a id="PROCESSING_YUV_4_2_0_VIDEO_FORMATS" />Processamento de formatos de vídeo YUV 4:2:0</h3> Um aplicativo deve mapear o plano de luma (Y) separadamente dos planos de croma (UV). Os desenvolvedores fazem isso chamando **CreateShaderResourceView** duas vezes para a mesma textura e passando formatos de 1 canal e de 2 canais. Passar um formato de 1 canal compatível com o plano Y mapeia apenas o plano Y. Passar um formato de 2 canais compatível com os planos UV (juntos) mapeia apenas os planos U e V como uma única exibição de recurso.

Os formatos YUV 4:2:0 estão listados em [DXGI\_FORMAT](https://learn.microsoft.com/en-us/windows/desktop/api/dxgiformat/ne-dxgiformat-dxgi_format).

#### Exemplos

O exemplo [D3D12nBodyGravity](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) usa **ID3D12Device::CreateShaderResourceView** da seguinte maneira:

Descreva e crie duas exibições de recurso de sombreador com base em uma descrição.

```cpp theme={null}
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 do D3D12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code).

<div class="code" />

## Requisitos

**Cabeçalho:** d3d12\_xs.h ou d3d12\_x.h<br />**Biblioteca:** d3d12\_xs.lib ou d3d12\_x.lib<br />**Plataformas com suporte**: consoles XBOX Series e família XBOX One

## Confira também

[ID3D12Device](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [D3D12_SHADER_RESOURCE_VIEW_DESC](/pt-BR/reference/graphics/d3d12/structs/d3d12_shader_resource_view_desc_public.md)
- [D3D12_TEX1D_SRV](/pt-BR/reference/graphics/d3d12/structs/d3d12_tex1d_srv_public.md)
- [D3D12_CPU_DESCRIPTOR_HANDLE](/pt-BR/reference/graphics/d3d12/structs/d3d12_cpu_descriptor_handle_public.md)
- [D3D12_TEX3D_SRV](/pt-BR/reference/graphics/d3d12/structs/d3d12_tex3d_srv_public.md)
- [D3D12_TEXCUBE_SRV](/pt-BR/reference/graphics/d3d12/structs/d3d12_texcube_srv_public.md)
