CVDisplayLink常量outputTime值

时间:2014-03-18 02:22:58

标签: objective-c cocoa opengl vsync

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

说明:

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

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

似乎这行代码广泛用于不同的应用程序和发动机。

问题:

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

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

1 个答案:

答案 0 :(得分:0)

通过使用以下替代代码,我发现我认为这是计算帧之间的增量秒数的好方法:

double deltaSeconds = (outputTime->videoTime - self.previousOutputVideoTime) / (double)outputTime->videoTimeScale;
self.previousOutputVideoTime = outputTime->videoTime;