如何缩放屏幕像素?

pum*_*mpy 6 xna 2d sprite

我写了一个2D跳转和运行引擎,产生320x224(320x240)的图像.为了保持旧学校"像素化" - 感觉它,我想根据用户的分辨率将得到的图像缩放2或3或4.

我不想缩放每一个精灵,而是生成的图像!

提前致谢 :)

Bob*_*Bob 1

我不太确定“产生......图像”是什么意思,但如果你的意思是你的最终结果是纹理,那么你可以将其绘制到屏幕上并设置比例:

spriteBatch.Draw(texture, position, source, color, rotation, origin, scale, effects, depth);
Run Code Online (Sandbox Code Playgroud)

只需将刻度替换为您想要的任何数字(2、3 或 4)即可。我做了类似的事情,但按精灵缩放而不是结果图像。如果您还有其他意思,请告诉我,我会尽力提供帮助。

XNA 默认对缩放图像进行抗锯齿处理。如果您想保留像素化的优点,您需要以立即排序模式绘制并设置一些附加参数:

spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None);
GraphicsDevice.SamplerStates[0].MagFilter = TextureFilter.Point;
GraphicsDevice.SamplerStates[0].MinFilter = TextureFilter.Point;
GraphicsDevice.SamplerStates[0].MipFilter = TextureFilter.Point;
Run Code Online (Sandbox Code Playgroud)

它可以是 Point 纹理过滤器,也可以是 None 纹理过滤器。我正在工作,所以我努力记起脑海中的事情。今天晚些时候我会以一种或另一种方式确认。