Listas de Triângulos
Uma lista de triângulos é uma lista de triângulos isolados. Eles podem ou não estar perto um do outro. Uma lista de triângulos deve ter pelo menos três vértices e o número total de vértices deve ser divisível por três.
Use listas de triângulos para criar um objeto composto por partes separadas. Por exemplo, uma maneira de criar uma parede de campo de força em um jogo 3D é especificar uma grande lista de triângulos pequenos e desconectados. Em seguida, aplique um material e uma textura que pareçam emitir luz para a lista de triângulos. Cada triângulo na parede parece brilhar. A cena atrás da parede torna-se parcialmente visível através das lacunas entre os triângulos, como um jogador pode esperar ao olhar para um campo de força.
As listas de triângulos também são úteis para criar primitivos que têm bordas nítidas e são sombreados com sombreamento Gouraud. Consulte Vetores normais de face e vértice (Direct3D 9).
A ilustração a seguir mostra uma lista de triângulos renderizados.
O código a seguir mostra como criar vértices para essa lista de triângulos.
struct CUSTOMVERTEX
{
float x,y,z;
};
CUSTOMVERTEX Vertices[] =
{
{-5.0, -5.0, 0.0},
{ 0.0, 5.0, 0.0},
{ 5.0, -5.0, 0.0},
{10.0, 5.0, 0.0},
{15.0, -5.0, 0.0},
{20.0, 5.0, 0.0}
};
O exemplo de código abaixo mostra como renderizar essa lista de triângulos no Direct3D 9 usando IDirect3DDevice9::D rawPrimitive.
//
// It is assumed that d3dDevice is a valid
// pointer to a IDirect3DDevice9 interface.
//
d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );
Você também pode usar faixas de triângulo para renderizar triângulos que não estão conectados uns aos outros. Para fazer isso, especifique um triângulo degenerado (ou seja, um triângulo com tamanho zero) na lista; Isso criará uma linha entre os dois triângulos que não aparecerá durante a renderização. Por exemplo, para renderizar apenas o primeiro e o último triângulo do exemplo anterior, inicialize o buffer de vértice com os seguintes vértices:
CUSTOMVERTEX Vertices[] =
{
{-5.0, -5.0, 0.0},
{ 0.0, 5.0, 0.0},
{ 5.0, -5.0, 0.0},
{ 5.0, -5.0, 0.0}, // degenerate triangle
{10.0, 5.0, 0.0}, // degenerate triangle
{10.0, 5.0, 0.0},
{15.0, -5.0, 0.0},
{20.0, 5.0, 0.0}
};
Tópicos relacionados