XNA: уменьшение масштаба 2D-сглаживания текстуры?

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

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

graphics.PreferMultiSampling = true;

а также

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

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

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

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

Фактический результатЖелаемый результат

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


person Hoeloe    schedule 06.04.2012    source источник


Ответы (1)


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

person Caleb Jares    schedule 06.04.2012
comment
Я вызываю его в конструкторе игры после определения GraphicsDeviceManager (очевидно) и перед вызовом ApplyChanges(). - person Hoeloe; 06.04.2012
comment
Я также могу добавить, что независимо от того, где я его добавляю, похоже, это не имеет никакого значения. - person Hoeloe; 07.04.2012