Inhaltsverzeichnis

  1. Einleitung

Kommentare

Einstieg in SlimDX - Teil 2: Sprites

Autor: SteveKr

^ Einleitung


Willkommen zum 2. Teil der SlimDX-Tutorial-Serie. Diesmal geht es um das Rendern von 2D-Sprites.

Um Sprites einfach und leicht zu zeichnen gibt es die Sprite-Klasse. Desweiteren benötigen wir noch ein Texture-Objekt, in dem wir die zu zeichnende Textur ablegen.
Sprite sprite;
Texture texture;


Nun fügen wir eine Grafik zu unserem Projekt hinzu. Zu beachten ist, dass die Datei auch ins Ausgabeverzeichnis kopiert wird, damit die Anwendung sie später wie gewünscht findet.

Anschließend erstellen wir nach der InitializeDevice-Methode unser Sprite-Objekt, dessen Konstruktor einen Device als Parameter verlangt.

Die Grafik laden mit der FromFile-Methode der Texture-Klasse und weisen die geladene Textur unserem texture-Objekt zu.
private void Form1_Load(object sender, EventArgs e)
{
    InitializeDevice();

    sprite = new Sprite(device);
    texture = Texture.FromFile(device, "Content/frog.png");

    Show();
    Render();
}

In der Render-Methode notieren wir zwischen Leeren (Clear) und Anzeigen (Present) des Backbuffers die beiden Methoden BeginScene und EndScene, die genau das tun, was ihr Name schon verdeutlicht.
device.Clear(ClearFlags.Target, new Color4(Color.White), 0, 0);
device.BeginScene();

device.EndScene();
device.Present();

Bevor nun die Draw-Methode des Sprites aufgerufen werden kann, muss man diese zwischen eine Begin- und End-Methode packen:
sprite.Begin();

// Zeichnen

sprite.End();

Wenn wir eine PNG-Datei zeichnen wollen, sollte man zudem der Begin-Methode als Parameter SpriteFlags.AlphaBlend mitgeben, damit auch die Transparenz berücksichtigt wird.

Damit sind alle Vorarbeiten erledigt und wir können endlich zur eigentlichen Draw-Methode kommen.
sprite.Draw(texture, Vector3.Zero, new Vector3(20, 20, 0), new Color4(Color.White));

Als ersten Parameter übergeben wir unsere Textur, der 2. bezeichnet den Mittelpunkt des Sprites, in diesem Fall linksoben. Mit dem 3. Parameter legen wir die Position fest und mit dem 4. und letzten die Tönung. Soll farblich nichts verändert werden, kann man einfach Weiß angeben.




Und auch diesmal müssen wir die Objekte beim Beenden wieder freigeben. Zu Direct3D- und Device-Objekten kommen nun Sprite und Textur.