Háromszögcsíkok
A háromszögcsík összekapcsolt háromszögek sorozata. Mivel a háromszögek csatlakoztatva vannak, az alkalmazásnak nem kell minden egyes háromszög mindhárom csúcsát ismételten megadnia. Például csak hét csúcsra van szüksége a következő háromszögsáv definiálásához.
A rendszer v1, v2 és v3 csúcsokat használ az első háromszög rajzolásához; v2, v4 és v3 a második háromszög rajzolásához; v3, v4 és v5 a harmadik rajzolásához; v4, v6 és v5 a negyedik rajzolásához; és így tovább. Figyelje meg, hogy a második és negyedik háromszög csúcsai sorrenden kívül vannak; ez annak biztosításához szükséges, hogy az összes háromszög óramutató járásával megegyező irányban legyen rajzolva.
A térhatású jelenetek legtöbb objektuma háromszögcsíkokból áll. Ennek az az oka, hogy a háromszögcsíkok olyan összetett objektumok megadására használhatók, amelyek hatékonyan használják a memóriát és a feldolgozási időt.
Az alábbi ábra egy renderelt háromszögcsíkot ábrázol.
Az alábbi kód bemutatja, hogyan hozhatók létre csúcspontok ehhez a háromszögsávhoz.
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ögcsíkot 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_TRIANGLESTRIP, 0, 4);
Háromszögcsík használatával jeleníthet meg olyan háromszögeket, amelyek nem kapcsolódnak egymáshoz. Ehhez adjon meg egy elfajult háromszöget (azaz egy háromszöget, amelynek területe nulla) a háromszöglistában. Ez létrehoz egy vonalat a két háromszög között, amely nem jelenik meg. Ha csak az előző példában szereplő első és utolsó háromszögeket szeretné megjeleníteni, módosítsa a csúcspuffert az itt látható módon:
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}
};
Kapcsolódó témakörök