将整个游戏绘制到渲染目标,然后将其扩展为像素不匹配问题的可行解决scheme?

为了清除由我的标题引起的一些可能的混淆,我的游戏意味着像素化。 我目前通过将一个名为World.Scale (当前为8)的常量乘以精灵大小和位置来实现这一点。 这意味着每个像素现在在屏幕上是8×8,这是我想要的。

不过,我想要一个更简单的方法来进行游戏计算,而无需在绘图或计算任何东西时找出适合World.Scale 。 此外,我目前遇到像素不匹配的问题(见图)。

像素不匹配

为了解决这个问题,我考虑了将游戏中的所有内容渲染到渲染目标上,然后通过World.Scale缩放渲染目标并将其绘制到屏幕上,但我不确定渲染目标是如何工作的,所以我不确定关于这个的任何可能的性能影响。

这是个好主意吗? 有更好的select吗?

请注意,您可以提供一个matrix参数的SpriteBatch.Begin 。 使用您的游戏“虚拟屏幕”尺寸来计算比例因子。 这样你就可以用本地的“虚拟”分辨率绘制你的游戏,并让matrix完成你的任务。

例如:

 float xscale = (float)ScreenWidth / VirtualscreenWidth; float yscale = (float)ScreenHeight / VirtualscreenHeight; Matrix transformmatrix = Matrix.CreateScale(xscale, yscale,1.0f); spriteBatch.Begin(,,,transformmatrix); //supply parameters as usual but add the matrix. 

您可以通过计算matrix,同时考虑纵横比(使用信箱或信箱)来使其更好。

我相信monogame.extended有一个实现使用这个方法(和其他有用的东西!)