高级用法

下面几部分概述了高级用法主题,在库正常运行期间不需要这些功能。

其他受支持的跟踪器

Tuning Fork 支持多种跟踪器。支持具有以下插桩键的跟踪器:

  • 帧起始的间隔时间(称为 PACED_FRAME_TIME
  • CPU 时间:帧起始与帧的 CPU 工作结束之间的间隔时间(称为 CPU_TIME
  • GPU 时间:GPU 处理上一帧的时间(称为 GPU_TIME
  • 原始帧时间,定义为 CPU 和 GPU 时间的上限(称为 RAW_FRAME_TIME)。此选项与 PACED_FRAME_TIME 之间的区别在于,此选项不包含 Swappy 或 VSync 包含的任何等待时间。

您可以在参考文档中找到这些插桩键。当您启用 Android Frame Pacing 库时,系统会自动使用其中某些键,但如果您并未启用此库,就应显式使用这些键。

获取保真度参数

TFErrorCode TuningFork_getFidelityParameters(const CProtobufSerialization* defaultParams, CProtobufSerialization* params, uint32_t timeout_ms);

如果您在设置中将 fidelity_params_callback 传递给 TuningFork_init,或库处于缩放模式下,您无需调用此函数。

此函数与服务器通信以检索保真度参数。发生以下情况之一后才会调用此函数:

  • 系统检索了保真度参数,返回值为 TFERROR_OK,且 returnedParams 存储了这些参数。在本例中,所有后续 tick 数据均与 returnedParams 相关联。
  • 经过的毫秒数等于 timeout_ms,并返回 TFERROR_TIMEOUT 的一个值。在本例中,所有后续 tick 数据均与 defaultFidelityParams 相关联。

您必须在此函数之前调用 TuningFork_init(),并且必须在主线程以外的独立线程上调用它(如需了解适合您使用的实用函数,请参阅 TuningFork_startFidelityParamDownloadThread())。您可以再次调用此函数(例如,在加载关卡时),以再次从服务器检索保真度参数。这样,您就可以动态更新参数,而不是只能在启动时重新加载参数。如果下载了新的保真度参数或使用了新的默认值,则会提交之前的所有 tick 数据。