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 に答える