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

> 指定著色器資源檢視 (SRV) 如何路由記憶體。

指定著色器資源檢視 (SRV) 如何路由記憶體。

## 語法

```cpp theme={null}
typedef enum D3D12_SHADER_COMPONENT_MAPPING
{
    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
    D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
    D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
} D3D12_SHADER_COMPONENT_MAPPING
```

## 常數

| 常數 | 描述 |
| - | - |
| D3D12\_SHADER\_COMPONENT\_MAPPING\_FROM\_MEMORY\_COMPONENT\_0 | 表示傳回元件 0 (紅色)。 |
| D3D12\_SHADER\_COMPONENT\_MAPPING\_FROM\_MEMORY\_COMPONENT\_1 | 表示傳回元件 1 (綠色)。 |
| D3D12\_SHADER\_COMPONENT\_MAPPING\_FROM\_MEMORY\_COMPONENT\_2 | 表示傳回元件 2 (藍色)。 |
| D3D12\_SHADER\_COMPONENT\_MAPPING\_FROM\_MEMORY\_COMPONENT\_3 | 表示傳回元件 3 (Alpha)。 |
| D3D12\_SHADER\_COMPONENT\_MAPPING\_FORCE\_VALUE\_0 | 表示強制將結果值設為 0。 |
| D3D12\_SHADER\_COMPONENT\_MAPPING\_FORCE\_VALUE\_1 | 表示強制將結果值設為 1。強制設為 1 的值是 0x1 或 1.0f，取決於來源格式中該元件的格式類型。 |

## 備註

此列舉可讓 SRV 選取在記憶體擷取之後，如何將記憶體路由至著色器中的四個傳回元件。每個著色器元件 \[0..3] (對應 RGBA) 的選項為：來自 SRV 擷取結果的元件 0..3，或強制設為 0 或強制設為 1。

可以指定 **D3D12\_DEFAULT\_SHADER\_4\_COMPONENT\_MAPPING** 來表示預設的 1:1 對應，否則可以使用巨集 **D3D12\_ENCODE\_SHADER\_4\_COMPONENT\_MAPPING** 指定任意對應。

請參閱下方內容。

請注意下列定義。

```cpp theme={null}
#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES \
(1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) \
((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
(((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
(((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
(((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) \
((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))
#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
```

## 需求

**標頭:** d3d12\_xs.h 或 d3d12\_x.h\
**程式庫:** d3d12\_xs.lib 或 d3d12\_x.lib\
**支援的平台**: XBOX Series 主機與 XBOX One 系列

## 另請參閱

[核心列舉](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/direct3d-12-enumerations)


## Related topics

- [D3D12_SHADER_RESOURCE_VIEW_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_shader_resource_view_desc_public.md)
- [D3D12_SHADER_VISIBILITY](/zh-TW/reference/graphics/d3d12/enums/d3d12_shader_visibility_public.md)
- [D3D12_SHADER_BYTECODE](/zh-TW/reference/graphics/d3d12/structs/d3d12_shader_bytecode_public.md)
- [D3D12_TILE_MAPPING_FLAGS](/zh-TW/reference/graphics/d3d12/enums/d3d12_tile_mapping_flags_public.md)
- [D3D12_SHADER_CACHE_FLAGS](/zh-TW/reference/graphics/d3d12/enums/d3d12_shader_cache_flags_public.md)
