XNA изображения выглядят размытыми / размытыми? - PullRequest
0 голосов
/ 30 апреля 2019

это довольно простой вопрос, но у меня довольно качественный спрайт. Однако, когда я загружаю его в SpriteBatch, он выглядит так:

enter image description here

Когда должно выглядеть следующим образом:

enter image description here

Что здесь происходит, и как мне это исправить?

Вот как я загружаю SpriteBatch:

   this.landers =
            Content.Load<Texture2D>("sprites/landers");

И у меня есть исходный прямоугольник для него:

this.sprite = Rectangle(0, 0, 900, 900);

Тогда я нарисую это:

sb.Draw(
            texture: this.landers,
            position: this.position,
            sourceRectangle: this.sprite,
            color: Color.White,
            rotation: this.rotation,
            origin: this.relativeOrigin,
            scale: 0.06f,
            effects: SpriteEffects.None,
            layerDepth: 0f
        );

1 Ответ

3 голосов
/ 01 мая 2019

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

Масштабирование всегда выглядит лучше всего как соотношение 1: 1 (не говоря уже о сохраненных вычислениях).Масштабирование в 6% (при использовании наивных, но быстрых методов, реализованных в Monogame) будет иметь такие же "артефакты", что и масштабирование изображения до ~ 16,66 ... раз (1666%) его размера.Прямоугольники источника / назначения лучше всего работают при масштабировании от 25% до 400%.За пределами этого диапазона «артефакты» имеют тенденцию появляться из-за потери информации или ее отсутствия.

Если вам нужно изображение большего (или меньшего) размера, создайте вторичную текстуру, предварительно масштабированную до центра необходимого диапазона.Та же проблема возникает с масштабированием шрифта.

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

...