【发布时间】:2014-03-27 13:20:21
【问题描述】:
我正在尝试使用“滴答时间”来跟踪我的 PNaCl 游戏中的时间,因为游戏时间不应受到用户调整系统时钟的影响。
我想同时使用pp::Core::GetTimeTicks() 和pp::InputEvent::GetTimeStamp() 来运行我的游戏模拟。逻辑如下:当输入事件发生时,运行模拟,直到游戏时间与该事件的pp::InputEvent::GetTimeStamp() 匹配。当渲染完成回调发生时,运行模拟直到游戏时间匹配pp::Core::GetTimeTicks()。
这很好用,据我所知,这个用例似乎得到支持,来自pp::Core::GetTimeTicks():
浏览器在将一些事件时间传递给模块时使用此时钟(例如,使用 PP_InputEvent::time_stamp_seconds 字段)。
但是,当我让计算机进入睡眠状态并再次打开它时,这两个时钟似乎与计算机睡眠的时间不同步。 pp::Core::GetTimeTicks() 似乎在系统休眠时停止运行,而pp::InputEvent::GetTimeStamp() 似乎一直在运行。输入事件的时间戳比系统休眠的时间早于核心时钟。
这会破坏同时使用两个时钟来计时。一种解决方法是在运行模拟以响应输入事件时使用核心时钟,但这可能会导致按键和屏幕上的操作之间的延迟更高。另一种解决方法是根本不运行模拟以响应输入事件。不过,我想弄清楚这个难题。
这是实现中的错误吗?是不是文档中的一个错误,似乎说这些时间应该是同步的?还是我阅读文档有误?
我在适用于 Linux 的 Chrome 33.0.1750.152(官方版本 256984)上遇到了这种情况。
【问题讨论】:
标签: c++ google-nativeclient ppapi