Share via


Topologías primitivas

Direct3D admite varias topologías primitivas, que definen cómo se interpretan y representan los vértices por la canalización, como listas de puntos, listas de líneas y franjas de triángulos.

Topologías primitivas básicas

Se admiten las siguientes topologías primitivas básicas (o tipos primitivos):

Para ver una visualización de cada tipo primitivo, vea el diagrama más adelante en este tema en Dirección de viento y posiciones de vértice inicial.

La fase Ensamblador de entrada (IA) lee datos de búferes de vértices e índices, ensambla los datos en estos primitivos y, a continuación, envía los datos a las fases de canalización restantes.

Adyacencia primitiva

Todos los tipos primitivos de Direct3D (excepto la lista de puntos) están disponibles en dos versiones: un tipo primitivo con adyacencia y un tipo primitivo sin adyacencia. Los primitivos con adyacencia contienen algunos de los vértices circundantes, mientras que los primitivos sin adyacencia contienen solo los vértices del primitivo de destino. Por ejemplo, el primitivo de lista de líneas tiene un primitivo de lista de líneas correspondiente que incluye adyacencia.

Los primitivos adyacentes están diseñados para proporcionar más información sobre la geometría y solo son visibles a través de un sombreador de geometría. La adyacencia es útil para sombreadores de geometría que usan la detección de siluetas, extrusión de volumen de sombras, etc.

Por ejemplo, supongamos que desea dibujar una lista de triángulos con adyacencia. Una lista de triángulos que contiene 36 vértices (con adyacencia) producirá 6 primitivos completados. Los primitivos con adyacencia (excepto franjas de línea) contienen exactamente el doble de vértices que el primitivo equivalente sin adyacencia, donde cada vértice adicional es un vértice adyacente.

Dirección de viento y posiciones de vértice inicial

Como se muestra en la ilustración siguiente, un vértice inicial es el primer vértice no adyacente en un primitivo. Un tipo primitivo puede tener varios vértices iniciales definidos, siempre y cuando cada uno se use para un primitivo diferente.

  • Para una franja de triángulos con adyacencia, los vértices iniciales son 0, 2, 4, 6, etc.
  • Para una franja de líneas con adyacencia, los vértices iniciales son 1, 2, 3, etc.
  • Un primitivo adyacente, por otro lado, no tiene vértice inicial.

En la ilustración siguiente se muestra el orden de vértices para todos los tipos primitivos que el ensamblador de entrada puede producir.

diagrama de ordenación de vértices para tipos primitivos

Los símbolos de la ilustración anterior se describen en la tabla siguiente.

Símbolo NOMBRE Descripción
símbolo de un vértice Vértice Un punto en el espacio 3D.
símbolo para la dirección del desvanado Dirección de desvanado Orden de vértice al ensamblar un primitivo. Puede ser en el sentido de las agujas del reloj o en sentido contrario a las agujas del reloj.
símbolo para vértice inicial Vértice inicial Primer vértice no adyacente en un primitivo que contiene datos por constante.

 

Generación de varias tiras

Puede generar varias tiras a través del corte de tiras. Puede realizar un corte de tiras llamando explícitamente a la función RestartStrip HLSL o insertando un valor de índice especial en el búfer de índice. Este valor es –1, que es 0xffffffff para índices de 32 bits o 0xffff para índices de 16 bits.

Un índice de –1 indica un "corte" explícito o "reinicio" de la franja actual. El índice anterior completa la primitiva o franja anterior y el siguiente índice inicia una nueva primitiva o franja.

Para obtener más información sobre cómo generar varias tiras, consulta Fase del sombreador de geometría (GS).

Fase del ensamblador de entrada (IA)

Canalización de gráficos