Listes de triangles

Une liste de triangles est une liste de triangles isolés. Ils peuvent ou non être proches les uns des autres. Une liste de triangles doit avoir au moins trois sommets et le nombre total de sommets doit être divisible par trois.

Utilisez des listes de triangles pour créer un objet composé de morceaux disjoints. Par instance, une façon de créer un mur de champ de force dans un jeu en 3D consiste à spécifier une grande liste de petits triangles non connectés. Appliquez ensuite un matériau et une texture qui semblent émettre de la lumière à la liste des triangles. Chaque triangle dans le mur semble briller. La scène derrière le mur devient partiellement visible à travers les interstices entre les triangles, comme un joueur peut s’y attendre lorsqu’il regarde un champ de force.

Les listes de triangles sont également utiles pour créer des primitives qui ont des bords tranchants et sont ombrées avec l’ombrage Gouraud. Consultez Vecteurs normaux de face et de vertex (Direct3D 9).

L’illustration suivante illustre une liste de triangles affichée.

illustration d’une liste de triangles rendue

Le code suivant montre comment créer des sommets pour cette liste de triangles.

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}

};

L’exemple de code ci-dessous montre comment afficher cette liste de triangles dans Direct3D 9 à l’aide de IDirect3DDevice9::D rawPrimitive.

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

Vous pouvez également utiliser des bandes de triangles pour afficher les triangles qui ne sont pas connectés les uns aux autres. Pour ce faire, spécifiez un triangle dégénéré (c’est-à-dire un triangle de taille nulle) dans la liste ; Cela crée une ligne entre les deux triangles qui n’apparaît pas pendant le rendu. Par exemple, pour afficher uniquement le premier et le dernier triangle de l’exemple précédent, initialisez la mémoire tampon de vertex avec les sommets suivants :

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

Primitives