0

我正在写这篇文章,以防其他人遇到同样的问题,因为缺少 CVDisplayLink API 的文档。

介绍:

在我的 CVDisplayLink 代码中,我一直在使用以下代码来获取调用其回调之间的 deltaSeconds 值:

float deltaTime = 1.0 / (outputTime->rateScalar * (float)outputTime->videoTimeScale / (float)outputTime->videoRefreshPeriod);

这行代码似乎在不同的应用程序和引擎中广泛使用。

问题:

在运行我的 OpenGL 应用程序时,我注意到这个值现在是恒定0.016669的(准确地说)。除了使用 Mavericks 和新的开发工具之外,我没有做出任何重大改变来解释这种行为变化。

到目前为止,找到原因一直是一个失败的原因。

4

1 回答 1

0

我发现我认为是使用以下替代代码计算帧之间的 deltaSeconds 的好方法:

double deltaSeconds = (outputTime->videoTime - self.previousOutputVideoTime) / (double)outputTime->videoTimeScale;
self.previousOutputVideoTime = outputTime->videoTime;
于 2014-03-18T02:22:57.697 回答