自機をプレイヤーの操作で移動するように実装したところ、なんかスムーズにいかず引っかかる感じがした。
そこで、DirectXのサンプルフレームワークのシーンをアップデートする関数
void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext ) { }
の引数にあるfElapsedTime(経過時間)を調べてみたら、だいたい0.0167くらいの値なんだけど、ときどき倍くらいの値になったりすることがあった。
そこで、このfElapsedTimeを考慮して移動量を求めるようにした。
たとえば、次のような感じだったのを、
void FrameMove() { x += 10; }
次のように変更。値は適当。
void FrameMove(float fElapsedTime) { x += fElapsedTime * 100; }
これで前よりはスムーズに移動するようになった。でもどきどき引っかかるような感じは多少残っている。これは単純に描画の更新が遅れているからかな。