我正在写这篇文章,以防其他人因为缺乏CVDisplayLink API文档而遇到同样的问题。
说明:
在我的CVDisplayLink代码中,我一直使用以下代码来获取对其回调的调用之间的deltaSeconds值:
float deltaTime = 1.0 / (outputTime->rateScalar * (float)outputTime->videoTimeScale / (float)outputTime->videoRefreshPeriod);
似乎这行代码广泛用于不同的应用程序和发动机。
问题:
在运行我的OpenGL应用程序时,我注意到这个值现在是常量(准确地说0.016669
)。除了使用Mavericks和新的开发工具之外,我没有对这种行为改变做出任何重大改变。
到目前为止,找到原因是一个失败的原因。
答案 0 :(得分:0)
通过使用以下替代代码,我发现我认为这是计算帧之间的增量秒数的好方法:
double deltaSeconds = (outputTime->videoTime - self.previousOutputVideoTime) / (double)outputTime->videoTimeScale;
self.previousOutputVideoTime = outputTime->videoTime;