2009-05-08 9 views
3

Bonjour J'ai du mal à restituer correctement le sprite avec SlimDX. Il dessine un peu à l'échelle, tout comme .NET Drawing DrawImageUnscaled. Je n'utilise aucune transformation.Dessin 2D avec SlimDX

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); 

Rendu:

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: Si vous ne savez pas comment imaginer le mauvais rendu, voici ce que je me rendais et référence (ignorer cette couleur blanche , c'est juste PNG transparent). Remarquez comment la première image est mise à l'échelle Wrong Correct

Répondre

4

Est-il possible que votre carte graphique a des problèmes de dessin NPOT textures (non-puissance de deux). Si c'est le cas, augmentez la taille de la texture au POT suivant. Cela a résolu de nombreux problèmes de dessin pour moi (en utilisant SlimDX aussi). J'ai également utilisé SlimDX pour le rendu 2D, mais je n'ai pas utilisé de sprites, mais j'ai dessiné toutes les choses comme des "primitives" et en utilisant un vertex buffer. Peut-être que cela pourrait aussi être une option

2

Ajouter un mélange alpha lors de l'initialisation de l'image-objet.