ECG VI-1

Managed DirectX

In SharpDevelop ein DirectX-Projekt erzeugen: Es entsteht ein Rahmenprogramm, in dem bis hin zur Animation alles vorverdrahtet ist. Es wird nur noch nichts gezeichnet.

Vertex-Puffer anlegen und füllen

// Attribut ergänzen:
private VertexBuffer vb;
// zur Initialisierung:
vb = new VertexBuffer(typeof(CustomVertex.PositionColored),
                      6, device, Usage.WriteOnly, 0, Pool.Managed);
CustomVertex.PositionColored[] v = (CustomVertex.PositionColored[]) vb.Lock(0, 0);
v[0] = new CustomVertex.PositionColored(0.5f, -0.5f, 0.0f, Color.Black.ToArgb());
v[1] = new CustomVertex.PositionColored(0.0f, 1.0f, 0.0f, Color.Red.ToArgb());
v[2] = new CustomVertex.PositionColored(-0.5f, 0.2f, 0.0f, Color.Green.ToArgb());
v[3] = new CustomVertex.PositionColored(0.7f, -0.6f, 0.0f, Color.Beige.ToArgb());
v[4] = new CustomVertex.PositionColored(0.8f, 0.5f, 0.0f, Color.Yellow.ToArgb());
v[5] = new CustomVertex.PositionColored(0.9f, 0.8f, 0.0f, Color.Black.ToArgb()); 
vb.Unlock();

Zeichnen

device.BeginScene();
device.SetStreamSource(0, vb, 0);
device.VertexFormat = CustomVertex.PositionColored.Format;
device.RenderState.Lighting = false;
device.RenderState.CullMode = Cull.None;
device.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);
device.EndScene();

Freigeben (z.B. in DeleteDeviceObjects)

vb.Dispose();