当我拉伸
我想在我的游戏中使用“像素化”图形,并想知道如何禁用此功能,以便使用最简单的最近邻缩放。
我为说明创建了这张图片:(x4缩放)
我该如何实现这个目标?
Texture2D
时,像素会出现模糊效果。我想在我的游戏中使用“像素化”图形,并想知道如何禁用此功能,以便使用最简单的最近邻缩放。
我为说明创建了这张图片:(x4缩放)
![enter image description here](https://istack.dev59.com/qfaTc.webp)
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise);
结果很好。谢谢! - Acidicsampler2D mySampler = sampler_state
{
Texture=<SomeTexture>;
Filter=POINT;
};
点采样可以防止GPU在采样图像时进行插值,这可能是导致您的抗锯齿/模糊行为的原因。
如果您只是使用SpriteBatch
绘制图像,则可以使用以下方式设置过滤器:
Device.SamplerStates[0] = SamplerState.PointClamp;
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Black);
var largeRect = new Rectangle(50, 50, sprite.Width * 3, sprite.Height * 3);
/// start the batch, but in immediate mode to avoid antialiasing
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.Opaque);
/// set the filter to Point
GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
/// draw the sprite
spriteBatch.Draw(sprite, largeRect, Color.White);
/// done!
spriteBatch.End();
// TODO: Add your drawing code here
base.Draw(gameTime);
}
spriteBatch.Draw(...)
方法。将其绘制到较大的矩形并使用 scale
属性都会产生这种效果。 - AcidicSamplerStates[0].Filter
的值会导致错误,指出它是只读属性。 - AcidicDraw
方法中每帧分配它还是在LoadContent
方法中分配它?(目前似乎两者都不起作用...) - Acidic你需要确保x和y坐标是整数值。分数坐标或尺寸会导致应用反走样来模拟“分数”像素偏移。
因此发生了模糊。
Rectangle
对象绘图仍然会产生不需要的效果。不过问题已经被回答了。 :) - Acidic