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 66 67 68 69 70 71 72 73 74 75 76 77
| // Notre device
private Device device = null;
// Notre VertexBuffer
private VertexBuffer vBuffer;
// Nos Vertices
private CustomVertex.TransformedColored[] Vertices;
// Indique si l'application est en court d'execution
private bool Running = true;
// Initialisation de la form
public Form1()
{
InitializeComponent();
// Appel de la procédure d'initialisation du device Direct3D
InitializeGraphics();
CreateTriangle();
}
// Procédure d'initialisation du device Direct3D
private void InitializeGraphics()
{
// Définition des PresentParameters
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true;
presentParams.SwapEffect = SwapEffect.Discard;
// Creation de notre device
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
}
// Procédure de création de notre triangle
private void CreateTriangle()
{
// On défini les vertices de notre triangle
Vertices = new CustomVertex.TransformedColored[3];
Vertices[0] = new CustomVertex.TransformedColored(200.0f, 125.0f, 0.5f, 1f, Color.Beige.ToArgb());
Vertices[1] = new CustomVertex.TransformedColored(275.0f, 275.0f, 0.5f, 1f, Color.Orange.ToArgb());
Vertices[2] = new CustomVertex.TransformedColored(125.0f, 275.0f, 0.5f, 1f, Color.Red.ToArgb());
// On crée le vertex buffer
vBuffer = new VertexBuffer(typeof(CustomVertex.TransformedColored), Vertices.Length,
device, 0, CustomVertex.TransformedColored.Format, Pool.Default);
// On stocke les vertices dans le vertex buffer
vBuffer.SetData(Vertices, 0, LockFlags.None);
}
// Boucle de rendu
public void Render()
{
while (Running)
{
// Effacement de la scène
device.Clear(ClearFlags.Target, 0, 1.0f, 0);
// Début de la scène
device.BeginScene();
// On défini le vertex buffer à lire
device.SetStreamSource(0, vBuffer, 0);
// On défini le type des vertices stockées dans notre vertex buffer
device.VertexFormat = CustomVertex.TransformedColored.Format;
// On dessine le vertex buffer
device.DrawPrimitives(PrimitiveType.TriangleList, 0, Vertices.Length / 3);
// Fin de la scène
device.EndScene();
// Présentation de la scène à l'écran
device.Present();
Application.DoEvents();
}
}
// Si la fenêtre est fermée on dit à la boucle de rendu de sortir
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Running = false;
} |
Partager