Zeichnung 2D mit SlimDX
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
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.