Partager via


Listes de triangles

Une liste de triangles est une liste de triangles isolés. Ils peuvent ou ne pas ê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 pièces disjointes. Par exemple, une façon de créer un mur de champ forcé dans un jeu 3D consiste à spécifier une grande liste de triangles petits et non connectés. Ensuite, appliquez un matériau et une texture qui semble émettre de la lumière dans la liste de triangles. Chaque triangle du mur semble briller. La scène derrière le mur devient partiellement visible à travers les écarts entre les triangles, car un joueur peut s’attendre à regarder un champ de force.

Les listes de triangles sont également utiles pour créer des primitives qui ont des arêtes nettes et qui sont ombrées avec l’ombrage de Gouraud. Voir vecteurs normaux visage et vertex (Direct3D 9).

L’illustration suivante illustre une liste de triangles rendue.

illustration d’une liste de triangles rendu

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 des triangles qui ne sont pas connectés les uns aux autres. Pour ce faire, spécifiez un triangle dégénéré (autrement dit, un triangle avec une taille nulle) dans la liste ; cela crée une ligne entre les deux triangles qui n’apparaissent pas lors du 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