在我的XNA游戏中,我以1920x1080分辨率编程和设计整个内容,然后缩放比例和信箱以适应正在运行的系统(XBox或PC)。
这是一个很好的解决方案,因为它让我只担心一个解决方案。
但是,我现在想知道,随着游戏变得越来越复杂,将来会不会再咬我了。
因为我不得不在每次绘制时缩放所有内容(我只使用比例因子缩放SpriteBatch.Begin()一次,所有绘图,然后调用End()),这会对性能产生任何不利影响?我知道XBox已经为你的XNA游戏做了这个本地设置为720p(我实际上是在XBox上运行时,它只是获得了适当的缩放因子)....所以我无法想象它太糟糕了,甚至对于PC来说。
答案 0 :(得分:3)
xbox在视频输出中的专用缩放器中实现其扩展 - 您的应用程序没有任何性能损失。
传递给SpriteBatch的比例因子只是翻译精灵的顶点。即使你没有通过一个刻度,所以它的因子为1,因此没有额外的负荷。
不同的屏幕尺寸会有不同的填充率(或多或少的像素),纹理查找也会有所不同,以便显示一些差异。
使用1028x720后备缓冲器是最安全的。 xbox可以硬件扩展到任何分辨率或比率,没有一行代码或任何性能问题。它将正确的信箱和硬件定标器是非常好的质量。你不能声称1080p支持真的是唯一的缺点。
如果您选择1020x1080作为后台缓冲区,请注意硬件缩放器无法将其缩小到480i并且在同行评审中会失败(如果有人注意的话,它应该会失败)
在WIndows上,最简单的事情可能是将所有内容绘制到RenderTarget,然后在最后一次扩展整个darn的东西。请参阅SpaceWar starterkit,了解执行该操作所需的几行代码。 (所有内部#if!XBOX所以你不要浪费周期在360上进行)
答案 1 :(得分:0)
这不应该花费你。缩放由他的视频卡完成。
但是,如果这确实让您担心,处理不同分辨率的另一个选项是将渲染目标更改为关闭屏幕缓冲区,渲染到该缓冲区,然后在屏幕上绘制一个方形,并将缓冲区作为纹理。渲染的像素越多,但您不需要对每个顶点进行变换。