Topologias primitivas
O Direct3D dá suporte a várias topologias primitivas, que definem como os vértices são interpretados e renderizados pelo pipeline, como listas de pontos, listas de linhas e faixas de triângulo.
Topologias primitivas básicas
Há suporte para as seguintes topologias primitivas básicas (ou tipos primitivos):
Para obter uma visualização de cada tipo primitivo, consulte o diagrama mais adiante neste tópico em Direção do enrolamento e posições dos vértices à esquerda.
O estágio IA (Assembler de Entrada) lê dados de buffers de vértice e índice, monta os dados nesses primitivos e envia os dados para os estágios de pipeline restantes.
Adjacência primitiva
Todos os tipos primitivos do Direct3D (exceto a lista de pontos) estão disponíveis em duas versões: um tipo primitivo com adjacência e um tipo primitivo sem adjacência. Os primitivos com adjacência contêm alguns dos vértices circundantes, enquanto os primitivos sem adjacência contêm apenas os vértices do primitivo alvo. Por exemplo, a primitiva de lista de linhas tem uma primitiva de lista de linhas correspondente que inclui adjacência.
Os primitivos adjacentes destinam-se a fornecer mais informações sobre sua geometria e só são visíveis por meio de um sombreador de geometria. A adjacência é útil para sombreadores de geometria que usam detecção de silhueta, extrusão de volume de sombra e assim por diante.
Por exemplo, suponha que você queira desenhar uma lista de triângulos com adjacência. Uma lista de triângulos que contém 36 vértices (com adjacência) produzirá 6 primitivas completas. Primitivos com adjacência (exceto faixas de linha) contêm exatamente duas vezes mais vértices do que o primitivo equivalente sem adjacência, onde cada vértice adicional é um vértice adjacente.
Direção do enrolamento e posições dos vértices à esquerda
Conforme mostrado na ilustração a seguir, um vértice à esquerda é o primeiro vértice não adjacente em um primitivo. Um tipo primitivo pode ter vários vértices à esquerda definidos, desde que cada um seja usado para um primitivo diferente.
- Para uma faixa de triângulo com adjacência, os vértices à esquerda são 0, 2, 4, 6 e assim por diante.
- Para uma faixa de linha com adjacência, os vértices à esquerda são 1, 2, 3 e assim por diante.
- Um primitivo adjacente, por outro lado, não tem vértice principal.
A ilustração a seguir mostra a ordenação de vértices para todos os tipos primitivos que o assembler de entrada pode produzir.
Os símbolos na ilustração anterior são descritos na tabela a seguir.
Símbolo | Nome | Descrição |
---|---|---|
Vértice | Um ponto no espaço 3D. | |
Direção de enrolamento | A ordem dos vértices ao montar um primitivo. Pode ser no sentido horário ou anti-horário. | |
Vértice Principal | O primeiro vértice não adjacente em um primitivo que contém dados por constante. |
Gerando várias faixas
Você pode gerar várias tiras por meio do corte de tiras. Você pode executar um corte de faixa chamando explicitamente a função RestartStrip HLSL ou inserindo um valor de índice especial no buffer de índice. Esse valor é –1, que é 0xffffffff para índices de 32 bits ou 0xffff para índices de 16 bits.
Um índice de –1 indica um 'corte' ou 'reinicialização' explícito da faixa atual. O índice anterior conclui o primitivo ou faixa anterior e o próximo índice inicia um novo primitivo ou faixa.
Para obter mais informações sobre como gerar várias faixas, consulte Estágio GS (Sombreador de Geometria).
Tópicos relacionados
Estágio IA-Assembler (Input-Assembler)
Pipeline de elementos gráficos