自定义分辨率概述
Xbox 游戏流式处理使你能够根据除电视以外的设备 (如手机、平板电脑和其他设备) 的输出分辨率来自定义游戏的分辨率。 这有助于跨设备提供更丰富的体验。 引入了 XGameStreamingGetDisplayDetails 和 XGameStreamingSetResolution,使你可以将流从 Xbox 的 16:9 纵横比切换到与许多不同设备 (如手机、平板电脑等) 匹配的纵横比。
例如,下图演示了 Xbox 游戏在常规 16:9 电视屏幕上与在流式处理环境中处于纵向模式下的平板电脑或手机的呈现方式,而不作任何更改。
图 1. 在没有 XGameStreamingGetDisplayDetails
和 XGameStreamingSetResolution
的不同设备上呈现的游戏
另一方面,下图演示了同一游戏如何使用上述 API 在不同设备上呈现,以将纵横比设置为 4:3。 请注意在平板电脑上呈现时空格是如何消失的。
图 2. 在具有 XGameStreamingGetDisplayDetails
和 XGameStreamingSetResolution
的不同设备上呈现的游戏
XGameStreamingGetDisplayDetails
返回指定客户端的显示详细信息。 这可用于做出明智的决策,例如要呈现的自定义纵横比或用于启用 DirectCapture 的分辨率。 构建 DirectCapture 是为了在游戏呈现兼容帧时最大程度地减少服务器延迟,消除了大约 16 到 72 毫秒的延迟。 这种延迟降低对于每个游戏是不同的,因为它取决于游戏的呈现输出。
XGameStreamingSetResolution
应在游戏确定分辨率后使用。 此 API 将设置流的分辨率。
API 公开 DirectCapture 的要求和客户端的首选解决方案,以便不同的游戏可以采用它们。
注意
需要遵循最小/最大要求以及其他 DirectCapture 规则。
请注意,虽然这些 API 将存在于家庭主机上,但它们只允许使用标准分辨率来维护电视兼容性 (有效地使它们不正常运行)。
如何正确使用 API
- 连接流
如果之前尚未流式传输游戏,请按照此处的说明操作: 游戏流测试先决条件
获取显示器的详细信息
若要获取显示器的详细信息,游戏可以调用
XGameStreamingGetDisplayDetails
这将返回指定客户端的显示详细信息。选择分辨率
这取决于游戏。 有多个选项,例如
a. 将
preferredWidth
/preferredHeight
用作最佳匹配项。b. 使用
XGameStreamingDisplayDetails
在预配置的一组测试分辨率中查找与分辨率最接近的匹配项。c. 打开电脑版游戏的分辨率选取器,以允许玩家选择分辨率。 请考虑将分辨率限制在
maxWidth
maxHeight
和maxPixels
范围内。设置流解析
调用
XGameStreamingSetResolution
将流式处理分辨率更改为新的呈现分辨率。 最好调用以响应用户操作,例如启动流、调整大小、轮换设备操作等。请注意,此分辨率不需要匹配 preferredWidth/preferredHeight。 如果它不匹配,则可以缩放流以适应屏幕上添加的字母或柱形框以填充任何剩余空间。
注意
请务必注意,设置流解析需要一些时间,使用有限的资源,并且具有玩家可见效果,因此此 API 只应很少调用;例如,当新客户端连接或更改其首选分辨率时。
每 200 分钟多次调用
XGameStreamingSetResolution
将导致短暂拉伸。 此 API 不是实时安全的。开始呈现
呈现自定义分辨率应与呈现其他分辨率相同 - 设置窗口大小并使用新分辨率配置回缓冲区。
如果想要试一试,请按照我们的示例 进行操作。