Strisce di triangoli
Una striscia di triangoli è una serie di triangoli collegati. 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 del quarto triangolo non sono in ordine; questo è necessario per assicurarsi che tutti i triangoli vengano disegnati in senso orario.
La maggior parte degli oggetti nelle scene 3D è costituita da strisce di triangoli. Ciò è dovuto al fatto che le strisce di triangoli possono essere usate per specificare oggetti complessi in modo da usare in modo efficiente la memoria e il tempo 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 striscia 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 di triangoli non collegati l'uno all'altro. A tale scopo, specificare un triangolo degenerato ( ovvero un triangolo la cui area è zero) nell'elenco di triangoli. In questo modo viene creata una linea tra i due triangoli che non verranno visualizzati. Per eseguire il rendering solo dei primi e degli ultimi triangoli dell'esempio precedente, modificare il buffer dei vertici 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