私の最初の投稿です。間違いがあれば、私に負担してください。CADisplayLinkは連続フレーム間に適切な時間間隔を提供していません
私はiPhone開発には初めてです。私はCADisplayLinkを使って自分のゲームの「更新」ループを実行していました。 XCode 8.2では、次のコードを使用して2つの連続するフレーム間の差分時間を計算しています。私gameLoop()関数
{
if (mDisplayLink==NULL) return;
mApp->CoreLoopUpdate((double)mDisplayLink.timestamp);
}
インサイド
私AppDelegate.mmファイル内{
mDisplayLink = [CADisplayLink displayLinkWithTarget: self selector:@selector(gameLoop)];
mDisplayLink.preferredFramesPerSecond = 60 ;
[mDisplayLink addToRunLoop :[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
}
私CoreLoopUpdate(ダブルtimeStampに)関数の内部
{
mDeltaTime = timestamp - mLastTimeStamp ;
if(mGame->IsInitialized())
{
Update(mDeltaTime);
PreRender(mDeltaTime);
Render(mDeltaTime);
}
mLastTimeStamp = timestamp ;
std::cout<<"\nFPS : " << 1.0/mDeltaTime ;
}
それは正しいFPSを印刷しました。私の古いシステム(MacBook Pro、OS - Yosemite、XCode 7.1)では(29 - 30)。私のシステム(OS - Sierra、XCode - 8.2)をアップグレードしたとき、その値は適切ではありません。それは私のゲームのプレーを台無しにする(2fpsから30fpsまで)劇的に変化します。
また、 http://www.gamasutra.com/blogs/KwasiMensah/20110211/88949/Game_Loops_on_IOS.php#note9に従って、デルタタイム計算のバリエーションを実装しました。 しかし、それは問題を解決しませんでした。
提案が役に立ちます。
申し訳ありませんが、私は2週間駅にいませんでした。あなたの助けに感謝します。あなたのフィードバックごとに、私はそれをデバイスでチェックしました。それはうまく動作します。もう一度ありがとう。 –