Вопрос

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

Инициализация:

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

Рендеринг:

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).Обратите внимание, как масштабируется первое изображение Неправильно Правильный

Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top