Listas de triángulos

Una lista de triángulos es una lista de triángulos aislados. Podrían estar o no cerca entre sí. Una lista de triángulos debe tener al menos tres vértices y el número total de vértices debe ser divisible en tres.

Use listas de triángulos para crear un objeto compuesto por piezas desenlace. Por ejemplo, una manera de crear una pared de campo forzado en un juego 3D es especificar una lista grande de triángulos pequeños y no conectados. A continuación, aplique un material y una textura que parezca emitir luz a la lista de triángulos. Cada triángulo de la pared parece brillar. La escena detrás de la pared se vuelve parcialmente visible a través de los huecos entre los triángulos, como podría esperar un jugador al mirar un campo de fuerza.

Las listas de triángulos también son útiles para crear primitivos que tienen bordes afilados y se sombrean con sombreado gouraud. Vea Vectores normales de caras y vértices (Direct3D 9).

En la ilustración siguiente se muestra una lista de triángulos representados.

ilustración de una lista de triángulos representado

En el código siguiente se muestra cómo crear vértices para esta 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}

};

En el ejemplo de código siguiente se muestra cómo representar esta lista de triángulos en Direct3D 9 mediante IDirect3DDevice9::D rawPrimitive.

//
// It is assumed that d3dDevice is a valid
// pointer to a IDirect3DDevice9 interface.
//
d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );

También puede usar franjas de triángulos para representar triángulos que no están conectados entre sí. Para ello, especifique un triángulo degenerado (es decir, un triángulo con un tamaño cero) en la lista; esto creará una línea entre los dos triángulos que no aparecerán durante la representación. Por ejemplo, para representar solo el primer y último triángulo del ejemplo anterior, inicialice el búfer de vértices con los vértices siguientes:

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}
};

Elementos primitivos