XNA:如何缩小Texture 2D并抗锯齿?

6
我正在进行一个XNA项目,我正在使用一些相当大的纹理,将它们作为Texture2D对象加载到游戏中,并在屏幕上以比它们加载时小得多的尺寸进行绘制。这样做的原因是我需要在不同的位置绘制它们以不同的大小,虽然我可以使用多个纹理来实现,但这样做是不切实际的。
我的问题是,XNA似乎在缩小这些Texture2D对象时没有进行抗锯齿处理。我已经设置了:
graphics.PreferMultiSampling = true;

并且
spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

但是一切都没有用。我也尝试了使用GraphicsDevice中的各种过滤器,但说实话,我并不知道自己在做什么。
显然,我正在使用spriteBatch进行绘制,但除此之外,在绘制方面并没有什么特别的东西。
这里是一个(放大的)示例,展示了发生的情况以及我试图实现的效果:
如您所见,XNA在缩放图像时没有提供抗锯齿。是否有一种方法可以强制它这样做,以使边缘看起来更清晰?
1个回答

2

你是否在创建GraphicsDevice之前调用了graphics.PreferMultiSampling = true;?你必须在创建之前打开它,可以在Game构造函数或者Initialize()方法中进行设置。


我在Game构造函数中调用它,在定义GraphicsDeviceManager之后(显然),在调用ApplyChanges()之前。 - Hoeloe
我可以补充说,无论我在哪里添加它,似乎都没有任何区别。 - Hoeloe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接