XNA窗口缩放性能

在我的XNA游戏中,我编程和devise1920x1080分辨率的整个事情,然后缩放比例和信箱,以适应运行系统(XBox或PC)。

这是一个很好的解决scheme,因为它使我只能担心一个解决scheme。

不过,现在我想知道,随着游戏变得越来越复杂,这是否会在未来回来咬我。

由于我不得不缩放一切与每一个绘制(我缩放比例因子SpriteBatch.Begin()只有一次,做所有绘图,然后调用End()),这是否会对性能有任何不利影响? 我知道XBox已经为XNA游戏为你做了这个设置为720p原生(这其实,我在XBox上运行时,它只是得到适当的缩放因子)….所以我无法想象这太糟糕了,即使是PC。

Xbox在视频输出的专业缩放器中进行缩放 – 应用程序的性能降为零。

您传递给SpriteBatch的缩放因子只是转换了精灵的顶点。 即使你不通过一个规模,它的因子是1,所以没有额外的负载。

不同的屏幕尺寸会有不同的填充率(或多或少的像素),纹理查找也会有所不同,因此会显示一些差异。

只需使用1028×720后置缓冲器是最安全的。 Xbox可以将硬件规模化为任何分辨率或比例,而无需任何代码或任何性能问题。 它会正确地信箱和硬件定标器是非常好的质量。 你不能声称1080p支持是唯一的缺点。

如果您选择1020×1080作为后备缓冲区,请注意,硬件缩放器无法将其缩小到480i,并且在同行评审中失败(如果有人注意,应该这样做)

在Windows上,最简单的事情可能是将所有东西绘制到RenderTarget,然后在最后一次缩放整个织物。 请参阅SpaceWar starterkit,了解执行该操作所需的几行代码。 (所有在#if!XBOX里面,所以你不要在360上浪费周期)

这不应该花费你。 缩放是由他的视频卡完成的。

但是,如果这确实让您担心,另一个处理不同分辨率的选项是将渲染目标更改为离屏缓冲区,渲染到该缓冲区,然后在屏幕上用缓冲区作为纹理绘制正方形。 渲染更多像素,但不需要对每个顶点进行变换。