XNA:缩小纹理2D抗锯齿?

时间:2012-04-06 15:41:21

标签: c# xna antialiasing texture2d xbox

我正在使用XNA中的一个项目,我正在使用一些相当大的纹理,我将其作为Texture2D对象加载到游戏中,并且在屏幕上绘制的内容比它们加载的要小得多。原因因为我需要在不同的地方以各种不同的尺寸绘制它们,虽然我可以用多种纹理来做这件事,但这样做是不切实际的。

我的问题是,在缩小它们时,XNA似乎不会对这些Texture2D对象进行抗锯齿处理。我已经设定了:

graphics.PreferMultiSampling = true;

以及

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

但无济于事。我也尝试过各种涉及GraphicsDevice过滤器的东西,但说实话,我并不知道自己在做什么。

显然,我正在使用spriteBatch绘制它,但除此之外,我绘制它的方式没什么特别有趣。

以下是正在发生的事情的放大示例,以及我正在努力实现的目标:

Actual Result Desired Result

如您所见,XNA在重新缩放图像时不提供任何抗锯齿功能。有没有办法强制它这样做,努力使边缘看起来更干净?

1 个答案:

答案 0 :(得分:2)

您是否在创建graphics.PreferMultiSampling = true;之前致电GraphicsDevice?您必须在Game构造函数或Initialize()中创建它之前将其打开。