2012-04-06 7 views
6

Estoy trabajando en un proyecto en XNA, y estoy usando texturas algo grandes, que estoy cargando en el juego como objetos Texture2D, y dibujo en la pantalla mucho más pequeño de lo que están cargados. La razón de esto es que tengo que dibujarlos en varios tamaños diferentes en diferentes lugares, y, aunque podría hacerlo con múltiples texturas, no es práctico hacerlo.XNA: Reducir la textura de los antialias 2D?

Mi problema es que XNA no parece antialias estos objetos Texture2D al reducirlos. He puesto:

graphics.PreferMultiSampling = true; 

y también

spriteBatch.Begin(SpriteBlendMode.AlphaBlend); 

Pero fue en vano. También probé varias cosas relacionadas con los filtros en el GraphicsDevice pero, para ser honesto, sin saber realmente lo que estaba haciendo.

Obviamente, estoy dibujando esto usando un spriteBatch, pero aparte de eso, nada particularmente interesante en la forma en que lo estoy dibujando.

Aquí es un (ampliada) ejemplo de lo que está pasando, y lo que estoy tratando de hacer que suceda:

Actual ResultDesired Result

Como se puede ver, XNA no proporciona ningún suavizado cuando reescalado la imagen. ¿Hay alguna manera de obligarlo a hacerlo, en un esfuerzo por hacer que los bordes se vean más limpios?

Respuesta

2

¿Está llamando graphics.PreferMultiSampling = true; antes de crear GraphicsDevice? Debe activarlo antes de crearlo, ya sea en el constructor Game o Initialize().

+0

Lo estoy llamando en el constructor del juego, después de definir el GraphicsDeviceManager (obviamente) y antes de llamar a ApplyChanges(). – Hoeloe

+0

También puedo agregar que no importa dónde lo agregue, parece que no importa. – Hoeloe