2012-04-06 82 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