Рисование 2D с помощью SlimDX - PullRequest
3 голосов
/ 09 мая 2009

Здравствуйте, у меня проблемы с рендерингом спрайта с помощью SlimDX. Рисуется немного масштабированным, как это делает рисование в .NET DrawImageUnscaled. Я не использую никаких преобразований.

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

РЕДАКТИРОВАТЬ: Если вы не знаете, как представить неправильный рендеринг, вот что я получаю и ссылки (игнорируйте этот белый цвет, это просто прозрачный PNG) Обратите внимание, как масштабируется первое изображение Неправильный Корректное

Ответы [ 2 ]

4 голосов
/ 09 мая 2009

Возможно ли, что у вашей видеокарты возникают проблемы при рисовании NPOT-текстур (не из двух степеней). Если это так, увеличьте размер текстуры до следующего горшка. Это решило многие проблемы с рисованием для меня (тоже с использованием SlimDX).

Кстати ... Я также использовал SlimDX для 2D-рендеринга, но не использовал спрайты, но рисую все как "примитивы" и использую буфер вершин. Может быть, это также может быть вариант

2 голосов
/ 18 мая 2009

Добавить альфа-смесь при инициализации спрайта.

...