C# 雪碧变得模糊

C# 雪碧变得模糊,c#,xna-4.0,C#,Xna 4.0,我开始学习C#和XNA,我想显示一个动画精灵(通过键盘移动) 我有一个精灵文件: 要仅显示所需的部件,我使用以下代码: Rectangle cuttedSprite = new Rectangle( this.W * (int)this.mCurSprite.X, this.H * (int)this.mCurSprite.Y, this.W, this.H ); spriteBatch.Draw(this.mSpriteTexture, this.mPo

我开始学习C#和XNA,我想显示一个动画精灵(通过键盘移动)

我有一个精灵文件:

要仅显示所需的部件,我使用以下代码:

Rectangle cuttedSprite = new Rectangle(
    this.W * (int)this.mCurSprite.X, 
    this.H * (int)this.mCurSprite.Y, 
    this.W, 
    this.H
);
spriteBatch.Draw(this.mSpriteTexture, this.mPosition, cuttedSprite, Color.White);
但我的问题是移动后渲染图像会变得模糊:


我试图通过更改
采样器状态来修复此问题,但没有任何更改。有人有办法帮我吗?

将精灵的位置四舍五入到最接近的整数。

如果精灵的目标矩形偏移小于一个像素,则像素着色器中的采样器将通过在相邻像素之间插值来计算颜色


另一个选项是将采样器的插值更改为最近邻插值。您可以通过在调用时指定
SamplerState.PointWrap
SamplerState.PointClamp
来实现这一点

释放移动按钮时,最容易转换到(int)位置.X和(int)位置.Y

请使用
采样状态.PointWrap尝试。另外,由于
mPosition
可能是一个
Vector2
,请尝试将
mPosition.X
mPosition.Y
四舍五入到最接近的整数。你是对的!当我在对角线上移动时,我试图在一个非整像素上显示我的图像。。。好的,把这个答案贴出来,我会验证它!根据处理情况的不同,您可能希望仅出于渲染目的执行舍入。例如,如果你使用的是物理,你想在解算器中保留精确的坐标,否则它会反复尝试并修正它们,所以只在实际的抽签时进行。这个问题几乎在一年前就得到了回答,除非有新的内容要添加,否则无需修改