私のプレイグラウンドプロジェクトでSDLを使用しています。私は自分のPCパフォーマンスを少し心配しています - それは高すぎるか、私はただ放浪しています。SDL FPS入力遅延
キーボードのキーがダウンしたとき、たとえば2 px
でスプライトの座標を変更すると、スプライトの動きが速すぎます。そして同じことが1 px
の速度に有効です。
通常(SFMLで)私は次のベロシティの変更を行います:1.f/App->GetTimeSinceLastFrame()
そしてそれはちょうど完全に機能します!しかし、今私はSDLを使いたいです。そして、次の理由により、異なるPCで同一ではない(確かに非常に醜い方法です)、または浮動小数点数の変換が行われないため、遅延を選択できません。
lastTicks = SDL_GetTicks()
を実行してから1.f/(float) SDL_GetTicks() - lastTicks()
を使用すると、その差は常にゼロです。だから私は間違っているか、または2つのフレーム間の時間がそれほど小さくて0
に丸められています。
私は何をすべきですか?
注:変更SDLをXXXのためには良いアドバイスではありません。)
'SDL_GetTicks'が高いため差分*がゼロ(そう意味で丸くなく蓄積し、たまに中の1つであるべき)殆ど*されるFPSので、唯一の解像度をミリ秒です。 'cur = get(); diff = cur-last; last = cur;'というように1つの呼び出ししか使わないようにしてください。より高い解像度のタイミング方法も役立ちます。 – jozxyqk