XGameStreamingGetLastFrameDisplayed
获取串流客户端屏幕上最近显示的帧的帧管道令牌。
语法
HRESULT XGameStreamingGetLastFrameDisplayed(
XGameStreamingClientId client,
D3D12XBOX_FRAME_PIPELINE_TOKEN* framePipelineToken
)
参数
client _In_
类型:XGameStreamingClientId
正在查询的流式处理客户端设备的 ID。
framePipelineToken _Out_
类型:D3D12XBOX_FRAME_PIPELINE_TOKEN*
客户端设备上最后显示的帧管道令牌。
返回值
类型:HRESULT
如果成功,则返回 S_OK;否则返回错误代码。
可能的错误
错误代码 | 错误值 | 错误原因 |
---|---|---|
E_GAMESTREAMING_NOT_INITIALIZED | 0x89245400 | XGameStreaming 运行时尚未初始化。 在调用其他 API 之前,请先调用 XGameStreamingInitialize。 |
E_GAMESTREAMING_CLIENT_NOT_CONNECTED | 0x89245401 | 指定客户端未连接。 |
E_GAMESTREAMING_NO_DATA | 0x89245402 | 请求的数据目前不可用, 稍后或许可用。 |
备注
当玩家流式处理游戏时,如果游戏需要在确认用户屏幕上显示的特定帧后更改游戏行为,则可以使用 XGameStreamingGetLastFrameDisplayed
。
当游戏可能使用此项的一些示例包括:
- 视觉计时器已过期,并且玩家在过期之间没有执行任何操作。
- 未在合适的时间段内执行操作。
- 在超出边界的情况下玩家继续他们的动作并且没有执行任何恢复操作。
XGameStreamingGetLastFrameDisplayed
在尝试确定何时应执行操作时使用,但未使用。 如果游戏需要确定在玩家完成了输入时要显示的内容,则游戏应使用 XGameStreamingGetAssociatedFrame。
示例
// In this example, when processing input, the game would like to pass along the last frame
// that was being displayed to the player so that their simulation engine can take that into account.
// The framePipelineToken was initially captured at the callback of WaitFrameEventX
void Game::Update(DX::StepTimer const& timer)
{
...
D3D12XBOX_FRAME_PIPELINE_TOKEN framePipelineToken = D3D12XBOX_FRAME_PIPELINE_TOKEN_NULL;
if SUCCEEDED(XGameStreamingGetLastFrameDisplayed(clientId, &framePipelineToken)
{
SimulateBasedOnLastFrameDisplayed(framePipelineToken);
}
else
{
// don't have last token, potentially simulate based on current frame
SimulateBasedOnCurrentFrame();
}
...
}
要求
头文件:xgamestreaming.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机
另请参阅
XGameStreamingGetAssociatedFrame
XGameStreaming
游戏流式传输延迟补偿概述