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

> 描述一組用作光線追蹤幾何的三角形。此結構所指向的幾何一律為三角形清單形式，不論是否已編製索引。

描述一組用作光線追蹤幾何的三角形。此結構所指向的幾何一律為三角形清單形式，不論是否已編製索引。不支援三角形帶。

## 語法

```cpp theme={null}
typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
{
    D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
    DXGI_FORMAT IndexFormat;
    DXGI_FORMAT VertexFormat;
    UINT IndexCount;
    UINT VertexCount;
    D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
```

### 成員

*Transform3x4*\
類型：D3D12\_GPU\_VIRTUAL\_ADDRESS

以列優先配置的 3x4 仿射轉換矩陣位址，會在加速結構建置期間套用至 <i>VertexBuffer</i> 中的頂點。<i>VertexBuffer</i> 的內容不會被修改。如果使用 2D 頂點格式，則套用轉換時會假設第三個頂點元件為零。

如果 <i>Transform3x4</i> 為 NULL，則不會轉換頂點。使用 <i>Transform3x4</i> 可能會增加加速結構建置的計算量和/或記憶體需求。

所指向的記憶體必須處於 [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_states) 狀態。位址必須對齊 16 個位元組，定義為 [D3D12\_RAYTRACING\_TRANSFORM3X4\_BYTE\_ALIGNMENT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/constants)。

*IndexFormat*\
類型：DXGI\_FORMAT

<i>IndexBuffer</i> 中索引的格式。必須是下列其中一項：

<ul>
  <li>**DXGI\_FORMAT\_UNKNOWN** - 當 IndexBuffer 為 NULL 時</li>
  <li>**DXGI\_FORMAT\_R32\_UINT**</li>
  <li>**DXGI\_FORMAT\_R16\_UINT**</li>
</ul>

*VertexFormat*\
類型：DXGI\_FORMAT

<i>VertexBuffer</i> 中頂點的格式。必須是下列其中一項：

<ul>
  <li>**DXGI\_FORMAT\_R32G32\_FLOAT** - 第三個元件假設為 0</li>
  <li>**DXGI\_FORMAT\_R32G32B32\_FLOAT**</li>
  <li>**DXGI\_FORMAT\_R16G16\_FLOAT** - 第三個元件假設為 0</li>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_FLOAT**  - 會忽略 A16 元件，可在此封裝其他資料，例如將頂點間距設定為 6 個位元組。</li>
  <li>**DXGI\_FORMAT\_R16G16\_SNORM**  - 第三個元件假設為 0</li>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_SNORM**   - 會忽略 A16 元件，可在此封裝其他資料，例如將頂點間距設定為 6 個位元組。</li>
</ul>

Tier 1.1 裝置支援下列其他格式：

<ul>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_UNORM**   - 會忽略 A16 元件，可在此封裝其他資料，例如將頂點間距設定為 6 個位元組</li>
  <li>**DXGI\_FORMAT\_R16G16\_UNORM**   - 第三個元件假設為 0</li>
  <li>**DXGI\_FORMAT\_R10G10B10A2\_UNORM**   - 會忽略 A2 元件，間距必須為 4 個位元組</li>
  <li>**DXGI\_FORMAT\_R8G8B8A8\_UNORM**   - 會忽略 A8 元件，可在此封裝其他資料，例如將頂點間距設定為 3 個位元組</li>
  <li>**DXGI\_FORMAT\_R8G8\_UNORM**   - 第三個元件假設為 0</li>
  <li>**DXGI\_FORMAT\_R8G8B8A8\_SNORM**  - 會忽略 A8 元件，可在此封裝其他資料，例如將頂點間距設定為 3 個位元組</li>
  <li>**DXGI\_FORMAT\_R8G8\_SNORM**   - 第三個元件假設為 0</li>
</ul>

*IndexCount*\
類型：UINT

<i>IndexBuffer</i> 中的索引數目。如果 <i>IndexBuffer</i> 為 NULL，則必須為 0。

*VertexCount*\
類型：UINT

<i>VertexBuffer</i> 中的頂點數目。

*IndexBuffer*\
類型：D3D12\_GPU\_VIRTUAL\_ADDRESS

頂點索引的陣列。如果為 NULL，三角形就不會編製索引。與圖形一樣，位址必須對齊 <i>IndexFormat</i> 的大小。

所指向的記憶體必須處於 [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_states) 狀態。請注意，如果應用程式想要在圖形輸入組合器與光線追蹤加速結構建置輸入之間共用索引緩衝區輸入，一律可以將資源同時置於多個讀取狀態的組合中，例如 **D3D12\_RESOURCE\_STATE\_INDEX\_BUFFER** | **D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE**。

*VertexBuffer*\
類型：D3D12\_GPU\_VIRTUAL\_ADDRESS\_AND\_STRIDE

包含間距的頂點陣列。位址和間距的對齊必須是元件大小的倍數，因此對於具有 32 位元元件的格式為 4 個位元組，對於具有 16 位元元件的格式為 2 個位元組。與圖形不同，間距沒有限制，只是僅會使用該值的低 32 位元；此欄位為 UINT64 純粹是為了讓相鄰欄位在各處都能整齊明確地對齊。每個頂點位置預期位於間距範圍的起始位址，任何多餘空間都會被加速結構建置忽略。此多餘空間可能包含其他應用程式資料，例如頂點屬性，無論是交錯放在頂點緩衝區中還是其他地方，應用程式都必須負責在著色器中手動擷取這些資料。

所指向的記憶體必須處於 [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_states) 狀態。請注意，如果應用程式想要在圖形輸入組合器與光線追蹤加速結構建置輸入之間共用頂點緩衝區輸入，一律可以將資源同時置於多個讀取狀態的組合中，例如 **D3D12\_RESOURCE\_STATE\_VERTEX\_AND\_CONSTANT\_BUFFER** | **D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE**

## 需求

**標頭:** d3d12\_xs.h\
**程式庫:** d3d12\_xs.lib\
**支援的平台**: XBOX Series 主機


## Related topics

- [D3D12_RAYTRACING_GEOMETRY_DESC (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_desc_public.md)
- [D3D12_RAYTRACING_INSTANCE_FLAGS (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/enums/d3d12_raytracing_instance_flags_public.md)
- [GetRaytracingAccelerationStructurePrebuildInfo](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_getraytracingaccelerationstructureprebuildinfo_public.md)
- [D3D12_RAYTRACING_GEOMETRY_TYPE (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/enums/d3d12_raytracing_geometry_type_public.md)
- [D3D12_RAYTRACING_GEOMETRY_AABBS_DESC (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_aabbs_desc_public.md)
