> ## 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](/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](/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](/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 consoles)](/zh-CN/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_desc_public.md)
- [D3D12_RAYTRACING_INSTANCE_FLAGS (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/enums/d3d12_raytracing_instance_flags_public.md)
- [GetRaytracingAccelerationStructurePrebuildInfo](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_getraytracingaccelerationstructureprebuildinfo_public.md)
- [D3D12_RAYTRACING_GEOMETRY_TYPE (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/enums/d3d12_raytracing_geometry_type_public.md)
- [D3D12_RAYTRACING_GEOMETRY_AABBS_DESC (XBOX Series consoles)](/zh-CN/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_aabbs_desc_public.md)
