2012-04-06 5 views
6

Я работаю над проектом в XNA, и я использую довольно большие текстуры, которые я загружаю в игру как объекты Texture2D, а рисование на экране намного меньше, чем они загружены. Причина это то, что мне нужно рисовать их разных размеров в разных местах, и, хотя я мог бы делать это с помощью нескольких текстур, это непрактично.XNA: Масштабирование текстуры 2D-адиабаты?

Моя проблема заключается в том, что XNA не похоже на антиалиасы этих объектов Texture2D при их уменьшении. Я поставил:

graphics.PreferMultiSampling = true; 

, а также

spriteBatch.Begin(SpriteBlendMode.AlphaBlend); 

Но безрезультатно. Я также пробовал различные вещи, связанные с фильтрами в GraphicsDevice, но, честно говоря, не зная, что я делаю.

Очевидно, что я рисую это, используя spriteBatch, но кроме этого ничего особо интересного в том, как я его рисую.

Вот (увеличенный) пример того, что происходит, и то, что я пытаюсь сделать случиться:

Actual ResultDesired Result

Как вы можете видеть, XNA не предоставляет каких-либо сглаживание при масштабировании изображение. Есть ли способ заставить меня сделать это, пытаясь заставить края выглядеть чище?

ответ

2

Вы звоните graphics.PreferMultiSampling = true; до GraphicsDevice? Вы должны включить его, прежде чем он будет создан, либо в конструкторе Game, либо в Initialize().

+0

Я вызываю его в конструкторе игры после определения GraphicsDeviceManager (очевидно) и перед вызовом ApplyChanges(). – Hoeloe

+0

Я также могу добавить, что независимо от того, где я его добавляю, это не имеет никакого значения. – Hoeloe