1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| public partial class frmDirectX : Form
{
//Le Device
private Device device = null;
//Le VertexBuffer
private VertexBuffer vBuffer;
//Les Vertices (sommets)
private CustomVertex.TransformedColored[] Vertices;
//Initialisation de la form
public frmDirectX()
{
InitializeComponent();
//Appel de la procédure d'initialisation du device Direct 3D
InitGraphics();
//OnCreateDevice(device, null);
CreateTriangles();
//Event pour la boucle de rendu
this.Paint += new PaintEventHandler(this.Render);
}
//Initialisation du device Direct 3D
private void InitGraphics()
{
//Définition des PresentParameters
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true;
presentParams.SwapEffect = SwapEffect.Discard;
//Création du device
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
}
//Création des triangles et de la forme souhaitée
private void CreateTriangles()
{
//Définition des vertices des triangles
Vertices = new CustomVertex.TransformedColored[4];
Vertices[0] = new CustomVertex.TransformedColored(350.0f, 400.0f, 1f, 1f, Color.WhiteSmoke.ToArgb());
Vertices[1] = new CustomVertex.TransformedColored(350.0f, 50.0f, 1f, 1f, Color.WhiteSmoke.ToArgb());
Vertices[2] = new CustomVertex.TransformedColored(750.0f, 50.0f, 1f, 1f, Color.WhiteSmoke.ToArgb());
Vertices[3] = new CustomVertex.TransformedColored(100.0f, 100.0f, 0f, 1f, Color.Green.ToArgb());
//Création du VertexBuffer
vBuffer = new VertexBuffer(typeof(CustomVertex.TransformedColored), Vertices.Length, device, 0, CustomVertex.TransformedColored.Format, Pool.Default);
//Stockage des vertices dans le VertexBuffer
vBuffer.SetData(Vertices, 0, LockFlags.None);
}
//La boucle de rendu
private void Render(object sender, PaintEventArgs e)
{
//Effacement de la scène
device.Clear(ClearFlags.Target, 0, 1.0f, 0);
//Début de la scène
device.BeginScene();
//Définition du VertexBuffer à lire
device.SetStreamSource(0, vBuffer, 0);
//Définition du type de vertices stockées dans le VertexBuffer
device.VertexFormat = CustomVertex.TransformedColored.Format;
//Dessine le VertexBuffer
device.DrawPrimitives(PrimitiveType.TriangleList, 0, Vertices.Length / 4);
//Fin de la scène
device.EndScene();
//Présentation de la scène
device.Present();
}
} |
Partager