2012-04-06 16 views
6

Ich arbeite an einem Projekt in XNA, und ich benutze einige ziemlich große Texturen, die ich als Texture2D Objekte in das Spiel lade und auf dem Bildschirm viel kleiner zeichne, als sie geladen sind. Der Grund dafür das ist, dass ich sie in verschiedenen Größen an verschiedenen Orten zeichnen muss, und obwohl ich dies mit mehreren Texturen machen könnte, ist es unpraktisch, dies zu tun.XNA: Textur-2D-Antialiasing herunterskalieren?

Mein Problem ist, dass XNA diese Texture2D-Objekte beim Skalieren nicht antialiasiert. Ich habe ein:

graphics.PreferMultiSampling = true; 

und auch

spriteBatch.Begin(SpriteBlendMode.AlphaBlend); 

Aber ohne Erfolg. Ich habe auch verschiedene Dinge mit den Filtern im GraphicsDevice ausprobiert, um ehrlich zu sein, ohne wirklich zu wissen, was ich mache.

Offensichtlich zeichne ich dies mit einem SpriteBatch, aber abgesehen davon, nichts besonders interessant in der Art, wie ich es zeichne. Hier

ist ein (vergrößert) Beispiel dafür, was passiert, und was ich versuche, geschehen zu lassen:

Actual ResultDesired Result

Wie Sie sehen können, ist XNA kein Anti-Aliasing zu liefern, wenn rescaling das Bild. Gibt es eine Möglichkeit, dies zu erzwingen, um die Kanten sauberer aussehen zu lassen?

Antwort

2

Rufen Sie graphics.PreferMultiSampling = true; an, bevor GraphicsDevice erstellt wird? Sie müssen es aktivieren, bevor es erstellt wird, entweder im Game-Konstruktor oder Initialize().

+0

Ich rufe es im Spielkonstruktor auf, nachdem ich den GraphicsDeviceManager definiert habe (offensichtlich) und bevor ich ApplyChanges() aufgerufen habe. – Hoeloe

+0

Ich kann auch hinzufügen, dass egal, wo ich es hinzufüge, scheint es keinen Unterschied zu machen. – Hoeloe