Strisce triangoli
Una striscia di triangoli è una serie di triangoli connessi. Poiché i triangoli sono connessi, l'applicazione non deve specificare ripetutamente tutti e tre i vertici per ogni triangolo. Ad esempio, sono necessari solo sette vertici per definire la striscia di triangoli seguente.
Il sistema usa vertici v1, v2 e v3 per disegnare il primo triangolo; v2, v4 e v3 per disegnare il secondo triangolo; v3, v4 e v5 per disegnare il terzo; v4, v6 e v5 per disegnare il quarto; E così via. Si noti che i vertici del secondo e quarto triangolo sono fuori ordine; questo è necessario per assicurarsi che tutti i triangoli vengano disegnati in un orientamento orario.
La maggior parte degli oggetti nelle scene 3D è costituita da strisce triangolari. Ciò è dovuto al fatto che le strisce triangolari possono essere usate per specificare oggetti complessi in modo da sfruttare in modo efficiente il tempo di memoria e di elaborazione.
La figura seguente illustra una striscia di triangoli di cui è stato eseguito il rendering.
Il codice seguente illustra come creare vertici per questa striscia di triangoli.
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'esempio di codice seguente illustra come eseguire il rendering di questa strip di triangoli in Direct3D 9 usando IDirect3DDevice9::D rawPrimitive.
//
// It is assumed that d3dDevice is a valid
// pointer to a IDirect3DDevice9 interface.
//
d3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 4);
Usare una striscia di triangoli per eseguire il rendering dei triangoli che non sono connessi tra loro. A tale scopo, specificare un triangolo degenerato , ovvero un triangolo la cui area è zero) nell'elenco triangolo. In questo modo viene creata una linea tra i due triangoli che non verranno sottoposti a rendering. Per eseguire il rendering solo dei primi e degli ultimi triangoli dell'esempio precedente, modificare il buffer del vertice, come illustrato di seguito:
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}
};
Argomenti correlati