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

# DispatchMeshX (XBOX Series 主機)

> 可更精細控制網格著色器啟動的延伸方法。

可更精細控制網格著色器啟動的延伸方法。可以啟動目前繫結 PSO 的放大著色器或網格著色器。

## 語法

```cpp theme={null}
void DispatchMeshX(  
         UINT ThreadGroupCountX,  
         UINT64 Flags,  
         UINT64 IndirectArgsPointer,  
         UINT64 PayloadPointer  
)  
```

### 參數

*ThreadGroupCountX*   \_In\_\
類型：UINT

XBOX 上所有的網格著色器叫用都是一維的。此參數指定要啟動多少個執行緒群組。

*Flags*   \_In\_\
類型：UINT64

值 0 -- 啟動網格著色器執行緒群組
值 1 -- 啟動放大著色器執行緒群組

*IndirectArgsPointer*   \_In\_\
類型：UINT64

指向放大著色器要寫入之目的地間接引數的指標。\
寫入的記錄格式為 D3D12XBOX\_INDIRECT\_ARGUMENT\_TYPE\_DISPATCH\_MESH\_X。\
如果要在執行間接呼叫中使用此指標，則指標必須指向具有 D3D12XBOX\_RESOURCE\_FLAG\_ALLOW\_INDIRECT\_BUFFER 旗標的緩衝區資源內部。\
此指標必須 256B 對齊，且設定的位元不能超過 40b (ABI 在將其傳遞給著色器之前，會將其右移 8b 成為 32b 值)。\
未選取放大著色器時，指標必須為 0。\
緩衝區的大小應足以容納 ThreadGroupCountX 個 D3D12XBOX\_INDIRECT\_ARGUMENT\_TYPE\_DISPATCH\_MESH\_X 執行個體。

*PayloadPointer*   \_In\_\
類型：UINT64

指向網格著色器承載儲存體之目的地或來源的指標。\
如果選取放大著色器，則它會指向寫入每個執行緒群組承載的位置。作為目的地使用時，承載指標必須 256B 對齊 (ABI 在將其傳遞至著色器之前，會將其右移 8b 成為 32b 值)。\
如果選取網格著色器，則它會指向網格著色器中所用承載的來源。作為來源使用時，承載指標必須 16B 對齊。\
無論哪種情況，緩衝區設定的位元都不能超過 40 個。

### 傳回值

類型：void

## 備註

呼叫一般的 DispatchMesh 時，驅動程式基本上會使用此功能，但會提供執行間接命令簽章和暫存緩衝區。

以下是一些使用範例

1. 僅使用手動傳遞的承載指標啟動網格著色器
   ```cpp theme={null}
           pCmdList->DispatchMeshX(NUM_THREADGROUPS,
               0,
               0,
               (UINT64)m_payloaData);
   ```

2. 啟動放大著色器，然後以執行間接方式執行網格著色器
   ```cpp theme={null}
           // Run the amp shader
               pCmdList->DispatchMeshX(numTGs,
                   flags,
                   pointerToIndirectArg,
                   pointerToPayload);

               // Barrier
               auto uavBarrier = CD3DX12_RESOURCE_BARRIER::UAV(nullptr);
               pCmdList->ResourceBarrier(1, &uavBarrier);

               // Run the MS
               pCmdList->ExecuteIndirect(
                   m_pCommandSignature,
                   NUM_INDIRECT_COMMANDS_COUNT,    // MaxCommandCount
                   m_indirectArgsStorage,          // pArgumentBuffer
                   0,                              // ArgumentBufferOffset
                   nullptr,                        // pCountBuffer
                   0);
   ```

## 需求

**標頭：** d3d12\_xs.h

**程式庫：** d3d12\_xs.lib\
**支援的平台：** XBOX Series 主機

## 另請參閱

[ID3D12GraphicsCommandList](/zh-TW/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs)


## Related topics

- [Mesh Shader pipeline overview](/build/core-features/graphics/newfeatures/ms/ms-overview.md)
- [Mesh Shader pipeline API overview](/build/core-features/graphics/newfeatures/ms/ms-api-design.md)
- [Dispatch](/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_dispatch_public.md)
- [Meshlet culling example](/build/core-features/graphics/newfeatures/ms/ms-meshlet-culling.md)
- [Why Mesh Shaders?](/build/core-features/graphics/newfeatures/ms/ms-why.md)
