Рисование 2D с помощью SlimDX
Вопрос
Здравствуйте, у меня возникли проблемы с корректным рендерингом спрайта с помощью 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-рендеринга, но не использовал спрайты, а рисовал все как "примитивы" и использовал буфер вершин.Возможно, это тоже могло бы быть вариантом
Другие советы
Добавьте альфа-смесь при инициализации спрайта.