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

> Describe un conjunto de triángulos que se usa como geometría de trazado de rayos. La geometría a la que apunta esta estructura está siempre en forma de lista de triángulos, indexada o no indexada.

Describe un conjunto de triángulos que se usa como geometría de trazado de rayos. La geometría a la que apunta esta estructura está siempre en forma de lista de triángulos, indexada o no indexada. No se admiten las franjas de triángulos.

## Sintaxis

```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
```

### Miembros

*Transform3x4*\
Tipo: D3D12\_GPU\_VIRTUAL\_ADDRESS

Dirección de una matriz de transformación afín de 3x4 con diseño por filas (row-major) que se aplicará a los vértices de <i>VertexBuffer</i> durante una compilación de estructura de aceleración.  El contenido de <i>VertexBuffer</i> no se modifica.  Si se usa un formato de vértice 2D, la transformación se aplica suponiendo que el tercer componente del vértice es cero.

Si <i>Transform3x4</i> es NULL, los vértices no se transformarán. Usar <i>Transform3x4</i> puede dar lugar a un aumento de los requisitos de proceso o de memoria para la compilación de la estructura de aceleración.

La memoria a la que se apunta debe estar en el estado [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/reference/graphics/d3d12_x/enums/d3d12_resource_states).  La dirección debe estar alineada a 16 bytes, definido como [D3D12\_RAYTRACING\_TRANSFORM3X4\_BYTE\_ALIGNMENT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/constants).

*IndexFormat*\
Tipo: DXGI\_FORMAT

Formato de los índices de <i>IndexBuffer</i>.  Debe ser uno de los siguientes:

<ul>
  <li>**DXGI\_FORMAT\_UNKNOWN** - cuando IndexBuffer es NULL</li>
  <li>**DXGI\_FORMAT\_R32\_UINT**</li>
  <li>**DXGI\_FORMAT\_R16\_UINT**</li>
</ul>

*VertexFormat*\
Tipo: DXGI\_FORMAT

Formato de los vértices de <i>VertexBuffer</i>.  Debe ser uno de los siguientes:

<ul>
  <li>**DXGI\_FORMAT\_R32G32\_FLOAT** - se supone que el tercer componente es 0</li>
  <li>**DXGI\_FORMAT\_R32G32B32\_FLOAT**</li>
  <li>**DXGI\_FORMAT\_R16G16\_FLOAT** - se supone que el tercer componente es 0</li>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_FLOAT**  - el componente A16 se omite; ahí pueden empaquetarse otros datos, por ejemplo, estableciendo el intervalo de vértice en 6 bytes.</li>
  <li>**DXGI\_FORMAT\_R16G16\_SNORM**  - se supone que el tercer componente es 0</li>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_SNORM**   - el componente A16 se omite; ahí pueden empaquetarse otros datos, por ejemplo, estableciendo el intervalo de vértice en 6 bytes.</li>
</ul>

Los dispositivos de nivel 1.1 admiten los siguientes formatos adicionales:

<ul>
  <li>**DXGI\_FORMAT\_R16G16B16A16\_UNORM**   - el componente A16 se omite; ahí pueden empaquetarse otros datos, por ejemplo, estableciendo el intervalo de vértice en 6 bytes</li>
  <li>**DXGI\_FORMAT\_R16G16\_UNORM**   - se supone que el tercer componente es 0</li>
  <li>**DXGI\_FORMAT\_R10G10B10A2\_UNORM**   - el componente A2 se omite; el intervalo debe ser de 4 bytes</li>
  <li>**DXGI\_FORMAT\_R8G8B8A8\_UNORM**   - el componente A8 se omite; ahí pueden empaquetarse otros datos, por ejemplo, estableciendo el intervalo de vértice en 3 bytes</li>
  <li>**DXGI\_FORMAT\_R8G8\_UNORM**   - se supone que el tercer componente es 0</li>
  <li>**DXGI\_FORMAT\_R8G8B8A8\_SNORM**  - el componente A8 se omite; ahí pueden empaquetarse otros datos, por ejemplo, estableciendo el intervalo de vértice en 3 bytes</li>
  <li>**DXGI\_FORMAT\_R8G8\_SNORM**   - se supone que el tercer componente es 0</li>
</ul>

*IndexCount*\
Tipo: UINT

Número de índices de <i>IndexBuffer</i>.  Debe ser 0 si <i>IndexBuffer</i> es NULL.

*VertexCount*\
Tipo: UINT

Número de vértices de <i>VertexBuffer</i>.

*IndexBuffer*\
Tipo: D3D12\_GPU\_VIRTUAL\_ADDRESS

Matriz de índices de vértices.  Si es NULL, los triángulos no están indexados.  Al igual que con los gráficos, la dirección debe estar alineada al tamaño de <i>IndexFormat</i>.

La memoria a la que se apunta debe estar en el estado [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/reference/graphics/d3d12_x/enums/d3d12_resource_states).  Tenga en cuenta que, si una aplicación desea compartir entradas de búfer de índices entre el ensamblador de entrada de gráficos y la entrada de compilación de la estructura de aceleración de trazado de rayos, siempre puede colocar un recurso en una combinación de estados de lectura simultáneamente, por ejemplo, **D3D12\_RESOURCE\_STATE\_INDEX\_BUFFER** | **D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE**.

*VertexBuffer*\
Tipo: D3D12\_GPU\_VIRTUAL\_ADDRESS\_AND\_STRIDE

Matriz de vértices que incluye un intervalo.  La alineación de la dirección y del intervalo debe ser un múltiplo del tamaño del componente, es decir, 4 bytes para formatos con componentes de 32 bits y 2 bytes para formatos con componentes de 16 bits.  A diferencia de los gráficos, no hay restricciones en el intervalo, aparte de que solo se usan los 32 bits inferiores del valor: el campo es UINT64 únicamente para que los campos vecinos se alineen de forma limpia y evidente en todas partes.  Se espera que cada posición de vértice esté en la dirección inicial del intervalo, y las compilaciones de la estructura de aceleración omiten cualquier espacio sobrante.  Este espacio sobrante puede contener otros datos de la aplicación, como atributos de vértice, que la aplicación es responsable de capturar manualmente en los sombreadores, ya sea que estén intercalados en búferes de vértices o en otro lugar.

La memoria a la que se apunta debe estar en el estado [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/reference/graphics/d3d12_x/enums/d3d12_resource_states).  Tenga en cuenta que, si una aplicación desea compartir entradas de búfer de vértices entre el ensamblador de entrada de gráficos y la entrada de compilación de la estructura de aceleración de trazado de rayos, siempre puede colocar un recurso en una combinación de estados de lectura simultáneamente, por ejemplo, **D3D12\_RESOURCE\_STATE\_VERTEX\_AND\_CONSTANT\_BUFFER** | **D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE**

## Requisitos

**Encabezado:** d3d12\_xs.h\
**Biblioteca:** d3d12\_xs.lib\
**Plataformas compatibles**: consolas XBOX Series


## Related topics

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