Frage

Hallo, ich habe Probleme machen richtig mit SlimDX Sprite. Es zieht ein wenig verkleinert, wie .NET Zeichnung DrawImageUnscaled tut. Ich bin keine Transformationen.

Init:

Vector2 position;
Sprite sprite;
Size size;
Texture texture;
sprite = new Sprite(Device);
string filename = /*some bitmap*/;
using (Image b = Bitmap.FromFile(filename))
  size = b.Size;

position = new Vector2(550, 230);
texture = Texture.FromFile(Device, filename);

Rendering:

Device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
Device.BeginScene();
sprite.Begin(SpriteFlags.None);
sprite.Draw(texture, new Vector3(size.Width / 2, size.Height / 2, 0), new Vector3(position, 0), Color.White);
sprite.End();
Device.EndScene();

EDIT: Wenn Sie nicht wissen, wie die falsche Rendering vorzustellen, hier ist das, was ich gemacht und Referenz erhalten (ignorieren, dass die weiße Farbe, es ist nur transparent PNG). Beachten Sie, wie das erste Bild skaliert Wrong Correct

War es hilfreich?

Lösung

Ist es möglich, dass Ihre Grafikkarte Probleme zeichnen NPOT-Texturen (Nicht-Zweierpotenz) hat. Wenn dem so ist, erhöhen Sie die Texturgröße auf die nächste POT. Diese gelöst viele Zeichnung Themen für mich (mit SlimDX auch).

Btw ... Ich habe auch SlimDX für 2D-Rendering verwendet, haben aber nicht die Verwendung von Sprites gemacht, aber alle Dinge als „Primitive“ und unter Verwendung eines Eckpunktpufferspeicher ziehen. Vielleicht auch dies könnte eine Option sein

Andere Tipps

In Alpha-Blending, wenn das Sprite initialisiert wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top