2012-04-06 74 views
6

我正在XNA的一個項目中工作,我使用了一些相當大的紋理,我將它們作爲Texture2D對象加載到遊戲中,並且在屏幕上繪製得比它們加載時小得多。這是我需要在不同的地方以各種不同的尺寸繪製它們,而且,雖然我可以用多種紋理來做到這一點,但這樣做是不切實際的。XNA:縮小紋理2D抗鋸齒?

我的問題是,XNA似乎並沒有在縮小這些Texture2D對象時反鋸齒。我已設置:

graphics.PreferMultiSampling = true; 

spriteBatch.Begin(SpriteBlendMode.AlphaBlend); 

,但無濟於事。我也嘗試過涉及GraphicsDevice中過濾器的各種事情,但說實話,我並不知道自己在做什麼。

顯然,我使用spriteBatch繪製了這個圖,但除此之外,我沒有特別有趣的繪製方式。

這裏是發生了什麼的(擴大)爲例,我想要使發生:

Actual ResultDesired Result

正如你所看到的,重新調整時,XNA不提供任何抗鋸齒圖片。有沒有辦法強制它這樣做,努力使邊緣看起來更清潔?

回答

2

您是否在GraphicsDevice創建之前致電graphics.PreferMultiSampling = true;?您必須在建立之前將其打開,或者在Game構造函數或Initialize()中。

+0

我在定義GraphicsDeviceManager(顯然)之後,在調用ApplyChanges()之前,在Game構造函數中調用它。 – Hoeloe 2012-04-06 19:02:18

+0

我也可以補充說,無論我在哪裏添加它,似乎都沒有區別。 – Hoeloe 2012-04-07 08:55:34