使用XNA,我试图让一个冒险游戏引擎,可以让你做游戏,看上去就像他们跌出了90年代初,像触手和萨姆&最大命中的日道路。因此,我希望游戏实际运行在320x240(我知道,它应该可能是320x200,但嘘),但它应该放大取决于用户设置。缩放整个屏幕在XNA
它的工作方式现在好了,但我遇到了一些问题,我真的希望它看起来更多像素化,它目前。
下面是我在做什么现在:
在游戏初始化:
public Game() {
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferWidth = 640;
graphics.PreferredBackBufferHeight = 480;
graphics.PreferMultiSampling = false;
Scale = graphics.PreferredBackBufferWidth/320;
}
规模是一个公共静态变量,我可以检查任何时候看到我多少应该相对我的球技规模到320x240。
在我的绘图功能:
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, null, Matrix.CreateScale(Game.Scale));
这样,一切都在320×240绘制并炸毁,以适应当前的分辨率(默认为640×480)。当然,我做数学将鼠标的实际坐标转换为320x240坐标,等等。
现在,这是伟大的,所有,但现在我正在开始扩大我的精灵,让他们走到远处等等。
看看下面的图片。左上角的图像是游戏以640x480运行时的截图。右边的图像是它应该看起来如何,在320x240。底部的一排图像只是最高达300%(在Photoshop中,不在引擎中),所以你可以看到我在说什么。
在640×480的图像,你可以看到不同的 “线宽”;较粗的线是它应该看起来的样子(一个像素= 2x2,因为它运行在640x480),但是较细的线(1x1像素)也会出现,当它们不应该时,由于缩放(请参阅右侧的图像)。
基本上我试图模仿一个320x240的显示器,但炸到使用XNA的任何分辨率,而矩阵转换没有做到这一点。有什么办法可以做到这一点?
感谢一大堆!我做了最后一个SpriteBatch调用:spriteBatch.Begin(SpriteSortMode.Deferred,BlendState.NonPremultiplied,SamplerState.PointClamp,DepthStencilState.Default,RasterizerState.CullNone);为了使投影看起来不模糊,但它看起来很棒!再次感谢! –