XGameStreamingGetDisplayDetails 和 XGameStreamingSetResolution 的情况下游戏在不同设备上的渲染
而下图则说明了使用上述 API 将纵横比设置为 4:3 时,同一游戏在不同设备上的渲染效果。请注意,在平板电脑上渲染时,空白区域已消失。
图 2. 使用 XGameStreamingGetDisplayDetails 和 XGameStreamingSetResolution 时游戏在不同设备上的渲染
XGameStreamingGetDisplayDetails 返回指定客户端的显示详情。这可用于做出明智的决策,例如以哪些自定义纵横比进行渲染或使用哪种分辨率来启用 DirectCapture。DirectCapture 旨在在游戏呈现兼容帧时最大限度地减少服务器延迟,消除大约 16 到 72 毫秒的延迟。由于取决于游戏的渲染输出,这种延迟减少因游戏而异。
一旦游戏确定了分辨率,就应使用 XGameStreamingSetResolution。此 API 将设置串流的分辨率。
这些 API 公开了 DirectCapture 的要求和客户端的首选分辨率,以便不同的游戏都能采用。
必须遵循最小/最大要求以及其他 DirectCapture 规则。
如何正确使用这些 API
- 连接串流
-
获取显示详情
要获取显示详情,游戏可以调用
XGameStreamingGetDisplayDetails,它将返回指定客户端的显示详情。 -
选择分辨率
这取决于游戏。有几种选择,例如
a. 使用
preferredWidth/preferredHeight作为最佳匹配。 b. 使用XGameStreamingDisplayDetails在预配置的已测试分辨率集中找到最接近的匹配项。 c. 为游戏 PC 版本开启分辨率选择器,让玩家选择分辨率。请考虑将其限制在maxWidthmaxHeight和maxPixels边界内的分辨率。 -
设置串流分辨率
调用
XGameStreamingSetResolution将串流分辨率更改为您的新渲染分辨率。最好在响应用户操作时调用它,例如串流开始、调整大小、旋转设备操作等。 请注意,该分辨率不需要与 preferredWidth/preferredHeight 匹配。如果不匹配,串流可能会被缩放以适应屏幕,并添加黑边(上下或左右)填充任何剩余空间。[!NOTE] 需要注意的是,设置串流分辨率需要时间,占用有限的资源,并且对玩家有可见的效果,因此此 API 应仅在很少的情况下被调用;例如,在新客户端连接或更改其首选分辨率时。
在 200 毫秒内多次调用XGameStreamingSetResolution会导致短暂的拉伸。此 API 不是 实时安全的。 - 开始渲染 渲染自定义分辨率应与渲染其他分辨率相同——设置窗口大小并使用新分辨率配置后缓冲区。
