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;
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();
}
{
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();
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();
// 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.




