製作25日目 なんかおかしいと思ったら60fps固定されてた
前回FPSの表示がおかしかったのは、算出方法がおかしかったのが原因でした。
60フレーム経過ごとに60/経過時間で算出するように変更しました。
さて、ちゃんと計算できているか試すには、意図的に同期を取らなかったり、
30FPSで動作するよう設定すればいいですね。
あれ・・ なぜ60FPSなの?
ウインドウが隠れていると、それ以外のレートで動作しているのに、アクティブになりtopになるとレートが60になってしまいます。
60FPS(画面のリフレッシュレート)に固定される件
プライマリバッファへの転送処理、Presentがvsyncに同期しているためでした。
これは、D3DPRESENT_PARAMETERSのPresentationIntervalメンバをD3DPRESENT_INTERVAL_IMMEDIATEに設定すれば、vsyncに同期しなくなるので、自前のタイマーでのウェイトで同期をとれます。
mmsystem.hをインクルードするとコンパイルできない。
FPSを管理するのにtimeGetTime関数を使用しました。
mmsystem.hのインクルードが必要なので、書き加えコンパイル。
1>c:\program files\microsoft sdks\windows\v6.0a\include\mmsystem.h(103) : error C2146: 構文エラー : ';' が、識別子 'MMVERSION' の前に必要です。
なんじゃこりゃー
そうです。mmsystem.hをインクルードする前に、windows.hがインクルードされていないとコンパイルが通らないらしいです。
#include
#include