Megosztás a következőn keresztül:


Háromszöglisták

A háromszögek listája az izolált háromszögek listája. Lehet, hogy közel vannak egymáshoz. A háromszöglistának legalább három csúcsponttal kell rendelkeznie, és a csúcsok teljes számának hárommal kell oszthatónak lennie.

Háromszöglisták használatával különálló részekből álló objektumot hozhat létre. Például, az egyik módja annak, hogy hozzon létre egy erőtér fal egy 3D-s játék, hogy adja meg a nagy listát a kis, nem összekapcsolt háromszögek. Ezután alkalmazzon egy olyan anyagot és anyagmintát, amely úgy tűnik, hogy fényt bocsát ki a háromszöglistára. A fal minden háromszöge ragyogni látszik. A fal mögötti jelenet részben láthatóvá válik a háromszögek közötti réseken keresztül, ahogy egy játékos elvárhatja, amikor erőmezőt néz.

A háromszöglisták olyan primitívek létrehozásához is hasznosak, amelyek éles élekkel rendelkeznek, és gouraud árnyékolással vannak árnyékolással. Lásd: Face and Vertex Normal Vectors (Direct3D 9).

Az alábbi ábra egy renderelt háromszöglistát ábrázol.

renderelt háromszöglista ábrája

Az alábbi kód bemutatja, hogyan hozhat létre csúcspontokat ehhez a háromszöglistához.

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}

};

Az alábbi kód példája bemutatja, hogyan jelenítheti meg ezt a háromszöglistát a Direct3D 9-ben IDirect3DDevice9::D rawPrimitivehasználatával.

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

Háromszögcsíkokkal olyan háromszögeket is megjeleníthet, amelyek nem kapcsolódnak egymáshoz. Ehhez adjon meg egy degenerált háromszöget (azaz nulla méretű háromszöget) a listában; ez létrehoz egy vonalat a két háromszög között, amely nem jelenik meg a renderelés során. Ha például csak az előző példa első és utolsó háromszögét szeretné megjeleníteni, inicializálja a csúcspuffert a következő csúcsokkal:

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

Primitívek