放大时精灵模糊
Sprites blurry when enlarged
在 XNA 中,我尝试使用旧式超级马里奥精灵创建游戏,但如果我尝试将它们变大,它们就会变得非常模糊。我曾尝试在 photoshop 中将 PNG 精灵保存为最近邻、双三次和双线性,但它们都显得同样模糊。我也试过在线压缩 PNG,也没有帮助。
我对 XNA 的了解有些基础,所以除非你的答案是代码,否则我可以简单地复制粘贴到我的 'main' 课程中,请解释如何使用它。
在您的绘图函数中,您应该只需要更改一行代码。
你在哪里调用 spritebatch.Begin();
而不是调用
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullCounterClockwise);
这会将您的 "GraphicsDevice" 设置为在精灵缩放时渲染纹理而不在整个像素之间插入颜色。
您可以做的另一件事是使用具有您希望游戏 "emulate" 分辨率的渲染目标,在渲染目标上绘制所有内容,最后将其绘制到屏幕上。
这有点超出了这个问题的范围,但如果你想创造一个真正的老派体验,这是理想的选择。
在 XNA 中,我尝试使用旧式超级马里奥精灵创建游戏,但如果我尝试将它们变大,它们就会变得非常模糊。我曾尝试在 photoshop 中将 PNG 精灵保存为最近邻、双三次和双线性,但它们都显得同样模糊。我也试过在线压缩 PNG,也没有帮助。
我对 XNA 的了解有些基础,所以除非你的答案是代码,否则我可以简单地复制粘贴到我的 'main' 课程中,请解释如何使用它。
在您的绘图函数中,您应该只需要更改一行代码。
你在哪里调用 spritebatch.Begin();
而不是调用
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullCounterClockwise);
这会将您的 "GraphicsDevice" 设置为在精灵缩放时渲染纹理而不在整个像素之间插入颜色。
您可以做的另一件事是使用具有您希望游戏 "emulate" 分辨率的渲染目标,在渲染目标上绘制所有内容,最后将其绘制到屏幕上。 这有点超出了这个问题的范围,但如果你想创造一个真正的老派体验,这是理想的选择。