> ## 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.

# D3D12_SHADER_RESOURCE_VIEW_DESC

> 描述着色器资源视图。(D3D12_SHADER_RESOURCE_VIEW_DESC)

描述着色器资源视图 (SRV)。

## 语法

```cpp theme={null}
typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
{
    DXGI_FORMAT Format;
    D3D12_SRV_DIMENSION ViewDimension;
    UINT Shader4ComponentMapping;
    D3D12_BUFFER_SRV Buffer;
    D3D12_TEX1D_SRV Texture1D;
    D3D12_TEX1D_ARRAY_SRV Texture1DArray;
    D3D12_TEX2D_SRV Texture2D;
    D3D12_TEX2D_ARRAY_SRV Texture2DArray;
    D3D12_TEX2DMS_SRV Texture2DMS;
    D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
    D3D12_TEX3D_SRV Texture3D;
    D3D12_TEXCUBE_SRV TextureCube;
    D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
    UNKNOWN_TYPE RaytracingAccelerationStructure;
} D3D12_SHADER_RESOURCE_VIEW_DESC
```

### 成员

*Format*\
类型：DXGI\_FORMAT

一个 [DXGI\_FORMAT](https://learn.microsoft.com/en-us/windows/desktop/api/dxgiformat/ne-dxgiformat-dxgi_format) 类型的值，用于指定查看格式。请参阅备注。

*ViewDimension*\
类型：D3D12\_SRV\_DIMENSION

一个 [D3D12\_SRV\_DIMENSION](/reference/graphics/d3d12_x/enums/d3d12_srv_dimension) 类型的值，用于指定视图的资源类型。此类型与基础资源的资源类型相同。此成员还决定了在下面的联合中使用哪个 \_SRV。

*Shader4ComponentMapping*\
类型：UINT

使用 [D3D12\_ENCODE\_SHADER\_4\_COMPONENT\_MAPPING](/reference/graphics/d3d12/enums/d3d12_shader_component_mapping_public) 宏构造的值。**D3D12\_SHADER\_COMPONENT\_MAPPING** 枚举指定通过此着色器资源视图 (SRV) 在着色器中访问纹理时应从内存返回哪些值。例如，它可以将来自内存的组件 1（绿色）或常量 `0` 路由到提供给着色器的值的组件 2 (`.b`)。

*Buffer*\
类型：D3D12\_BUFFER\_SRV

一个 [D3D12\_BUFFER\_SRV](/reference/graphics/d3d12/structs/d3d12_buffer_srv_public) 结构，将资源视为缓冲区。

*Texture1D*\
类型：D3D12\_TEX1D\_SRV

一个 [D3D12\_TEX1D\_SRV](/reference/graphics/d3d12/structs/d3d12_tex1d_srv_public) 结构，将资源视为 1D 纹理。

*Texture1DArray*\
类型：D3D12\_TEX1D\_ARRAY\_SRV

一个 [D3D12\_TEX1D\_ARRAY\_SRV](/reference/graphics/d3d12/structs/d3d12_tex1d_array_srv_public) 结构，将资源视为 1D 纹理数组。

*Texture2D*\
类型：D3D12\_TEX2D\_SRV

一个 [D3D12\_TEX2D\_SRV](/reference/graphics/d3d12/structs/d3d12_tex2d_srv_public) 结构，将资源视为 2D 纹理。

*Texture2DArray*\
类型：D3D12\_TEX2D\_ARRAY\_SRV

一个 [D3D12\_TEX2D\_ARRAY\_SRV](/reference/graphics/d3d12/structs/d3d12_tex2d_array_srv_public) 结构，将资源视为 2D 纹理数组。

*Texture2DMS*\
类型：D3D12\_TEX2DMS\_SRV

一个 [D3D12\_TEX2DMS\_SRV](/reference/graphics/d3d12/structs/d3d12_tex2dms_srv_public) 结构，将资源视为 2D 多重采样纹理。

*Texture2DMSArray*\
类型：D3D12\_TEX2DMS\_ARRAY\_SRV

一个 [D3D12\_TEX2DMS\_ARRAY\_SRV](/reference/graphics/d3d12/structs/d3d12_tex2dms_array_srv_public) 结构，将资源视为 2D 多重采样纹理数组。

*Texture3D*\
类型：D3D12\_TEX3D\_SRV

一个 [D3D12\_TEX3D\_SRV](/reference/graphics/d3d12/structs/d3d12_tex3d_srv_public) 结构，将资源视为 3D 纹理。

*TextureCube*\
类型：D3D12\_TEXCUBE\_SRV

一个 [D3D12\_TEXCUBE\_SRV](/reference/graphics/d3d12/structs/d3d12_texcube_srv_public) 结构，将资源视为 3D 立方体纹理。

*TextureCubeArray*\
类型：D3D12\_TEXCUBE\_ARRAY\_SRV

一个 [D3D12\_TEXCUBE\_ARRAY\_SRV](/reference/graphics/d3d12/structs/d3d12_texcube_array_srv_public) 结构，将资源视为 3D 立方体纹理数组。

*RaytracingAccelerationStructure*\
一个 [D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_SRV](/reference/graphics/d3d12/structs/d3d12_raytracing_acceleration_structure_srv_public) 结构，将资源视为光线追踪加速结构。

## 备注

视图是查看资源中数据的一种特定于格式的方式。视图确定要查看的数据以及在读取时如何转换。

查看资源时，资源视图描述必须指定与资源格式兼容的类型化格式。这意味着你无法使用名称中带有 \_TYPELESS 的任何格式创建资源视图描述。但是，可以通过为视图指定类型化格式来查看类型化资源。例如，DXGI\_FORMAT\_R32G32B32\_TYPELESS 资源可以使用以下类型化格式之一查看：DXGI\_FORMAT\_R32G32B32\_FLOAT、DXGI\_FORMAT\_R32G32B32\_UINT 和 DXGI\_FORMAT\_R32G32B32\_SINT，因为这些类型化格式与无类型资源兼容。

通过调用 [ID3D12Device::CreateShaderResourceView](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createshaderresourceview_public) 创建着色器资源视图描述。

## 要求

**头文件：** d3d12\_xs.h 或 d3d12\_x.h\
**库：** d3d12\_xs.lib 或 d3d12\_x.lib\
**支持的平台**：XBOX Series 主机和 XBOX One 系列

## 另请参阅

[Core structures](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/direct3d-12-structures)


## Related topics

- [CreateShaderResourceView](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createshaderresourceview_public.md)
- [D3D12_BUFFER_SRV](/zh-CN/reference/graphics/d3d12/structs/d3d12_buffer_srv_public.md)
- [D3D12_TEXCUBE_SRV](/zh-CN/reference/graphics/d3d12/structs/d3d12_texcube_srv_public.md)
- [D3D12_TEX2D_SRV](/zh-CN/reference/graphics/d3d12/structs/d3d12_tex2d_srv_public.md)
- [D3D12_TEX3D_SRV](/zh-CN/reference/graphics/d3d12/structs/d3d12_tex3d_srv_public.md)
