Inhaltsverzeichnis

  1. Einleitung
  2. Download und Installation
  3. Erste SlimDX-Anwendung

Kommentare

Einstieg in SlimDX - Teil 1: Erste Schritte

Autor: SteveKr

^ Einleitung


Dies ist der erste Teil einer kleinen Tutorial-Serie über die Programmierung mit dem DirectX-.Net-Wrapper SlimDX. SlimDX ist eine Alternative zu Microsofts Managed DirectX, welches nicht weiterentwickelt wird, und ermöglicht wie dieses die Nutzung der DirectX API in .Net-Anwendungen.


^ Download und Installation


Den Installer für die aktuellste SlimDX-Version kann man sich auf der Google Code Projekt-Seite herunterladen:
http://code.google.com/p/slimdx/wiki/Downloads?tm=2

Nach erfolgreicher Installation findet man die SlimDX-DLL unter C:\Programme\SlimDX SDK (March 2009).

^ Erste SlimDX-Anwendung


Wir erstellen eine neue Windows-Anwendung in Visual C# und fügen zu allererst die SlimDX-DLL als neuen Verweis hinzu. Dann wechseln wir zum Code der Form und fügen 2 neue Using-Direktiven hinzu:
using SlimDX;
using SlimDX.Direct3D9;


Nun deklarieren wir in der Form-Klasse zwei neue Objekt. Ein Direct3D und ein Device.
public partial class Form1 : Form
{
    Direct3D d3d;
    Device device;


Anschließend erstellen wir eine neue Methode mit dem Namen InitializeDevice, die wir in der Load-Methode der Form aufrufen.
public void InitializeDevice()
{
    d3d = new Direct3D();

    PresentParameters pp = new PresentParameters();
    pp.SwapEffect = SwapEffect.Discard;
    pp.DeviceWindowHandle = Handle;
    pp.Windowed = true;
    pp.BackBufferWidth = ClientSize.Width;
    pp.BackBufferHeight = ClientSize.Height;
    pp.BackBufferFormat = Format.A8R8G8B8;

    device = new Device(
        d3d,
        0,
        DeviceType.Hardware,
        Handle,
        CreateFlags.HardwareVertexProcessing,
        pp
        );
}


Mit dem ersten Parameter des Device-Konstruktors legen wir fest übergeben wir das Direct3D-Objekt, mit dem Zweiten legen wir fest, welche Grafikkarte genutzt werden soll. In diesem Fall die Primäre.
Mit dem 3. Parameter schalten wir die Hardwareunterstützung ein.
Der 4. Parameter ist der Handle des Fensters oder des Controls auf dem Gezeichnet werden soll.
Mit dem fünften Parameter schalten wir die Hardwareunterstützung für die Geometrieberechnungen ein.
Der letzte Parameter verlangt ein PresentParameters-Objekt, welches wir zuvor erstellt haben.

Mit SwapEffect bestimmen wir den Austausch des Backbuffers mit dem Frontbuffer.
DeviceWindowHandle bezeichnet das Handle des zu verwendenen Fensters.
Mit Windowed legen wir fest, ob die Anwendung im Fenster- oder Vollbild-Modus laufen soll.
Mit BackBufferWidth bzw. BackBufferHeight legen wir die Breite und Höhe des Backbuffers fest, mit BackBufferFormat dessen Farbtiefe.

Anschließend zeigen wir die Form mittels Show-Methode an.

Nun erstellen wir eine 2. Methode mit dem Namen Render, in der wir den Ausgabebereich bzw. den Backbuffer leeren und mit weißer Farbe füllen. Danach rufen wir die Present-Methode des Device auf um den Backbuffer anzuzeigen. Render rufen wir ebenfalls in der Load-Methode der Form, nach dem Anzeigen der Form, auf.
public void Render()
{
    device.Clear(ClearFlags.Target, new Color4(Color.White), 0, 0);
    device.Present();
}


Nun sollte folgendes zu sehen sein:


Die Form_Load-Methode sollte folgendermaßen ausschauen:
private void Form1_Load(object sender, EventArgs e)
{
    InitializeDevice();
    Show();
    Render();
}


Beim Beenden des Programms geben wir die SlimDX-Objekte wieder frei.
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    device.Dispose();
    d3d.Dispose();
}