Dreiecks Listen

Eine Dreiecks Liste ist eine Liste isolierter Dreiecke. Sie sind möglicherweise nah beieinander. Eine Dreiecks Liste muss mindestens drei Scheitel Punkte enthalten, und die Gesamtzahl der Scheitel Punkte muss von drei Scheitel Punkten unterschieden werden.

Verwenden Sie Dreiecks Listen, um ein Objekt zu erstellen, das aus zusammenhängenden Teilen besteht. Beispielsweise besteht eine Möglichkeit zum Erstellen einer Force-Field-Wand in einem 3D-Spiel darin, eine große Liste kleiner, nicht verbundener Dreiecke anzugeben. Wenden Sie dann ein Material und eine Textur an, mit denen ein Licht an die Dreiecks Liste ausgegeben wird. Jedes Dreieck in der Wand scheint zu leuchten. Die Szene hinter der Wand wird durch die Lücken zwischen den Dreiecken teilweise sichtbar, da ein Spieler bei der Betrachtung eines Force-Felds möglicherweise erwartet.

Dreiecks Listen können auch zum Erstellen primitiver Elemente mit Spitzen Kanten eingesetzt werden, die mit der Gouraud-Schattierung schattiert werden. Siehe Gesicht-und Scheitelpunkt normale Vektoren (Direct3D 9).

Die folgende Abbildung zeigt eine gerenderte Dreiecks Liste.

Abbildung einer gerenderten Dreiecks Liste

Der folgende Code zeigt, wie Vertices für diese Dreiecks Liste erstellt werden.

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}

};

Das folgende Codebeispiel zeigt, wie Sie diese Dreiecks Liste in Direct3D 9 mit IDirect3DDevice9::D rawprimitivRenderern.

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

Sie können auch Dreieck Striche verwenden, um Dreiecke zu Renten, die nicht miteinander verbunden sind. Geben Sie hierzu ein degeneriertes Dreieck (d. h. ein Dreieck mit einer Größe von 0) in der Liste an. Dadurch wird eine Linie zwischen den beiden Dreiecken erstellt, die während des Renderings nicht angezeigt wird. Um z. b. nur das erste und letzte Dreieck aus dem vorherigen Beispiel zu rendern, initialisieren Sie den Vertex-Puffer mit den folgenden Vertices:

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

Primitive