Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS

First Steps with Managed DirectX

What is Managed DirectX?

Basic drawing using Managed DirectX

Build a Direct3D application using the SharpDevelop wizard and add the following:
// A class member to hold our vertices
private VertexBuffer vb;
// ...
// Initialization
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();
// ...
// Drawing
device.BeginScene(); // already present in the generated code
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); // try other members of PrimitiveType
device.EndScene(); // already present in the generated code
// ...
// Release (e.g., in DeleteDeviceObjects)
vb.Dispose();

Debugging DirectX programs

Projection, Linear Perspective

So now we can paint using DirectX. But how does the z coordinate work?

Sensing depth (and how to simulate depth)

Projections: How to turn 3D space into 2D images