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 del viento y posiciones de vértices iniciales.
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 del viento y posiciones de vértices iniciales
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 ningún 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.
Los símbolos de la ilustración anterior se describen en la tabla siguiente.
Símbolo | Nombre | Descripción |
---|---|---|
Vértice | Un punto en el espacio 3D. | |
Dirección del viento | Orden de vértices al ensamblar un primitivo. Puede ser en sentido contrario a las agujas del reloj o en sentido contrario a las agujas del reloj. | |
Vértice inicial | Primer vértice no adyacente en un primitivo que contiene datos por constante. |
Generación de varias franjas
Puede generar varias tiras a través del corte de tiras. Puede realizar un corte de bandas llamando explícitamente a la función HLSL RestartStrip o insertando un valor de índice especial en el búfer de índices. 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 franjas, consulta Fase del sombreador de geometría (GS).
Temas relacionados
Fase del ensamblador de entrada (IA)