Questo è il codice che definisce i vertici.
public void CreaVertici()
{
vertices = new CustomVertex.PositionColored[9];
vertices[0].Position = new Vector3(0f, 0f, 0f);
vertices[0].Color = Color.Blue.ToArgb();
vertices[1].Position = new Vector3(0f, 10f, 0f);
vertices[1].Color = Color.Blue.ToArgb();
vertices[2].Position = new Vector3(10f, 0f, 0f);
vertices[2].Color = Color.Blue.ToArgb();
vertices[3].Position = new Vector3(5f, 0f, 0f);
vertices[3].Color = Color.Green.ToArgb();
vertices[4].Position = new Vector3(5f, 15f, 0f);
vertices[4].Color = Color.Green.ToArgb();
vertices[5].Position = new Vector3(15f, 0f, 0f);
vertices[5].Color = Color.Green.ToArgb();
vertices[6].Position = new Vector3(0f, -10f, 0f);
vertices[6].Color = Color.Red.ToArgb();
vertices[7].Position = new Vector3(18f, -15f, 0f);
vertices[7].Color = Color.Red.ToArgb();
vertices[8].Position = new Vector3(15f, 8f, 0f);
vertices[8].Color = Color.Red.ToArgb();
}
Il numero evidenziato in rosso su giallo è il numero di vertici compresi nell'array,Se non si usa vertexBuffer bisogna specificare i vertici uno dopo l'altro anche se sono uguali.
Una volta specificati i vertici, di tipo CustomVertex.PositionColored, si usa il comando che li stampa:
private void render()
{
device.Clear(ClearFlags.Target, System.Drawing.Color.Black, 1.0f, 0);
device.BeginScene();
device.VertexFormat = CustomVertex.PositionColored.Format;
device.DrawUserPrimitives(PrimitiveType.TriangleList, 3, vertices);
device.EndScene();
device.Present();
}
Ecco, quello marcato in rosso è il comando fondamentale, che stampa i triangoli specificando:
- Il tipo di primitiva
- Il numero di primitive
- l'array di vertici da usare.
Ecco l'immagine:

Ma se io uso device.DrawUserPrimitives specificando un numero inferiore di primitive:
private void render() { device.Clear(ClearFlags.Target, System.Drawing.Color.Black, 1.0f, 0); device.BeginScene(); device.VertexFormat = CustomVertex.PositionColored.Format; device.DrawUserPrimitives(PrimitiveType.TriangleList, 2, vertices); device.EndScene(); device.Present(); }Ottengo questa immagine:

Nessun commento:
Posta un commento