Compartilhar via


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.

Diagrama de ordenação de vértices para tipos primitivos

Os símbolos na ilustração anterior são descritos na tabela a seguir.

Símbolo Nome Descrição
símbolo para um vértice Vértice Um ponto no espaço 3D.
símbolo para direção de enrolamento Direção de enrolamento A ordem dos vértices ao montar um primitivo. Pode ser no sentido horário ou anti-horário.
símbolo para vértice à esquerda 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).

Estágio IA-Assembler (Input-Assembler)

Pipeline de elementos gráficos