Pregunta

Hola, tengo problemas para representar correctamente el sprite con SlimDX. Dibuja un poco escalado al igual que .NET Drawing DrawImageUnscaled hace. No estoy usando ninguna transformación.

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

Representación:

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

EDITAR: si no sabe cómo imaginar la representación incorrecta, esto es lo que obtengo y la referencia (ignore ese color blanco, es solo PNG transparente). Observe cómo se escala la primera imagen Incorrecto Correcto

¿Fue útil?

Solución

¿Es posible que su tarjeta gráfica tenga problemas para dibujar texturas NPOT (sin potencia de dos). Si es así, aumente el tamaño de la textura al siguiente POT. Esto resolvió muchos problemas de dibujo para mí (usando SlimDX también).

Por cierto ... También usé SlimDX para renderizado 2D, pero no he usado sprites, pero dibujé todas las cosas como " primitivas " y usando un buffer de vértices. Tal vez esto también podría ser una opción

Otros consejos

Agregue mezcla alfa al inicializar el sprite.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top